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文件注释标记及规范小结
Apr 01 PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 PHP
ThinkPHP安装和设置
Jul 27 PHP
php 利用array_slice函数获取随机数组或前几条数据
Sep 30 PHP
php实现遍历多维数组的方法
Nov 25 PHP
CodeIgniter自定义控制器MY_Controller用法分析
Jan 20 PHP
PHP导出Excel实例讲解
Jan 24 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 PHP
使用PHP反射机制来构造"CREATE TABLE"的sql语句
Mar 21 PHP
Laravel框架查询构造器 CURD操作示例
Sep 04 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
Sep 11 PHP
thinkphp5 路由分发原理
Mar 18 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
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
layui自定义工具栏的方法
2019/09/19 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
Python读取键盘输入的2种方法
2015/06/16 Python
Python简单计算文件夹大小的方法
2015/07/14 Python
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
详解python单例模式与metaclass
2016/01/15 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
python中while和for的区别总结
2019/06/28 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
python如何调用字典的key
2020/05/25 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
HTML5标签大全
2016/11/23 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
学习保证书范文
2014/04/30 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
golang 实现并发求和
2021/05/08 Golang