php桥接模式应用案例分析


Posted in PHP onOctober 23, 2019

本文实例讲述了php桥接模式应用。分享给大家供大家参考,具体如下:

桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。

示例:

当一个信息时

根据发送渠道分为:QQ消息、email消息、短信消息等
根据消息类型分为:普通、警告、危急等
每种消息都有三种类型(普通QQ消息、警告QQ消息、危急QQ消息...),
每种情况单独写一个类就需要写九个,如果扩展一个类型,就需要再写三个类。
使用桥接模式,可以减少类的数量,易扩展

abstract class info{
  public $msgClass = null;
  public function __construct($obj){
    $this->msgClass = $obj;
  }
  abstract function msg();
  public function send($to,$content){
    return $this->msg() . $this->msgClass->send($to,$content);
  }
}
//QQ信息
class qq_msg{
  public function send($to,$content){
    return '【QQ消息】发送给:'.$to.',内容:'.$content;
  }
}
//邮件信息
class email_msg{
  public function send($to,$content){
    return '【Email消息】发送给:'.$to.',内容:'.$content;
  }
}
//短信消息
class sms_msg{
  public function send($to,$content){
    return '【短信消息】发送给:'.$to.',内容:'.$content;
  }
}
//普通消息
class common_info extends info{
  public function msg(){
    return '【普通】';
  }
}
//警告消息
class warning_info extends info{
  public function msg(){
    return '【警告】';
  }
}
//危急消息
class danger_info extends info{
  public function msg(){
    return '【危急】';
  }
}
$a = new common_info(new email_msg());
$res = $a->send('zhang san','好好学习');
var_dump($res);
$a = new warning_info(new sms_msg());
$res = $a->send('zhang san','好好学习');
var_dump($res);

运行结果:

string(54) "【普通】【Email消息】发送给:zhang san,内容:好好学习"
string(53) "【警告】【短信消息】发送给:zhang san,内容:好好学习"

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP开发中常用的三个表单验证函数使用小结
Mar 03 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
php学习笔记 类的声明与对象实例化
Jun 13 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
浅析THINKPHP的addAll支持的最大数据量
Feb 03 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
php实现curl模拟ftp上传的方法
Jul 29 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
php批量删除操作(数据访问)
May 23 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
Mar 30 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 PHP
Nginx+php配置文件及原理解析
Dec 09 PHP
浅谈laravel框架与thinkPHP框架的区别
Oct 23 #PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 #PHP
基于laravel缓冲cache的用法详解
Oct 23 #PHP
PHP实现简单登录界面
Oct 23 #PHP
laravel框架与其他框架的详细对比
Oct 23 #PHP
laravel清除视图缓存的代码
Oct 23 #PHP
PHP实现简单用户登录界面
Oct 23 #PHP
You might like
JAVA/JSP学习系列之七
2006/10/09 PHP
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
php解析xml方法实例详解
2015/05/12 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
python切换hosts文件代码示例
2013/12/31 Python
python PIL模块与随机生成中文验证码
2016/02/27 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
大学生自荐信
2013/12/11 职场文书
一年级数学教学反思
2014/02/01 职场文书
项目经理任命书
2014/06/04 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
PyQt5实现多张图片显示并滚动
2021/06/11 Python
海弦WR-800F
2022/04/05 无线电
Spring Cloud OpenFeign模版化客户端
2022/06/25 Java/Android