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 相关文章推荐
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
May 28 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
Apr 25 PHP
ThinkPHP中自定义错误页面和提示页面实例
Nov 22 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
May 26 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
laravel 去掉index.php伪静态的操作方法
Oct 12 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
Jan 04 PHP
微信小程序结合ThinkPHP5授权登陆后获取手机号
Nov 23 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封装的page分页类完整实例
2016/10/18 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
js常用代码段收集
2011/10/28 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
Python中特殊函数集锦
2015/07/27 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
通过实例解析Python return运行原理
2020/03/04 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
告诉你怎样写创业计划书
2014/01/27 职场文书
九年级物理教学反思
2014/01/29 职场文书
刘胡兰的英雄事迹材料
2014/02/11 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
四年级小学生评语
2014/12/26 职场文书
运动会100米广播稿
2015/08/19 职场文书
月考总结与反思
2015/10/22 职场文书
Win11查看设备管理器
2022/04/19 数码科技
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS