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 相关文章推荐
一个更简单的无限级分类菜单代码
Jan 16 PHP
让PHP支持页面回退的两种方法[转]
Feb 14 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
Codeigniter整合Tank Auth权限类库详解
Jun 12 PHP
php对文件进行hash运算的方法
Apr 03 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
Jun 13 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
PHP 信号管理知识整理汇总
Feb 19 PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 PHP
PHP 使用位运算实现四则运算的代码
Mar 09 PHP
如何用Laravel包含你自己的帮助函数
May 27 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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
php 模拟POST提交的2种方法详解
2013/06/17 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
PHP 9 大缓存技术总结
2015/09/17 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
layui实现点击按钮给table添加一行
2018/08/10 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
Python在线运行代码助手
2016/07/15 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
通过python3实现投票功能代码实例
2019/09/26 Python
Python shutil模块用法实例分析
2019/10/02 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
鸿星尔克广告词
2014/03/21 职场文书
2015年企业新年寄语
2014/12/08 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
2016年五一促销广告语
2016/01/28 职场文书
Python 中面向接口编程
2022/05/20 Python
ubuntu下常用apt命令介绍
2022/06/05 Servers