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 中文处理函数集合
Aug 27 PHP
PHP 文件类型判断代码
Mar 13 PHP
php adodb介绍
Mar 19 PHP
PHP中通过加号合并数组的一个简单方法分享
Jan 27 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
Jul 07 PHP
PHP中的Memcache详解
Apr 05 PHP
微信支付扫码支付php版
Jul 22 PHP
PHP检测接口Traversable用法详解
Dec 29 PHP
thinkphp5框架实现的自定义扩展类操作示例
May 16 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
Jun 14 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
Oct 14 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 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
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
PHP实现上一篇下一篇的方法实例总结
2016/09/22 PHP
java script编程起步(第三课)
2007/01/10 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
Javascript的&&和||的另类用法
2014/07/23 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
python自动化生成IOS的图标
2018/11/13 Python
python实现简易数码时钟
2021/02/19 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
python中property和setter装饰器用法
2019/12/19 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
李培根演讲稿
2014/05/22 职场文书
路政管理求职信
2014/06/18 职场文书
关于旅游的活动方案
2014/08/15 职场文书
代理人委托书
2014/09/16 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
清明节主题班会
2015/08/14 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书