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函数解决SQL injection
Dec 09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
Jan 02 PHP
PHP 类型转换函数intval
Jun 20 PHP
关于php mvc开发模式的感想
Jun 28 PHP
php简单的会话类代码
Aug 08 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
Apr 24 PHP
PHP中使用TCPDF生成PDF文档实例
Jul 01 PHP
PHP return语句的另一个作用
Jul 30 PHP
php针对cookie操作的队列操作类实例
Dec 10 PHP
PHP迭代器和迭代的实现与使用方法分析
Apr 19 PHP
PHP获取对象属性的三种方法实例分析
Jan 03 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
10 个经典PHP函数
2013/10/17 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
jquery索引在使用中的一些困惑
2013/10/24 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
js实现小星星游戏
2020/03/23 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
Python装饰器结合递归原理解析
2020/07/02 Python
Python 使用office365邮箱的示例
2020/10/29 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
中国最大的名表商城:万表网
2016/08/29 全球购物
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
医院总经理职责
2013/12/26 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
安全生产大检查方案
2014/05/07 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
银行工作心得体会范文
2016/01/23 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
Python实现老照片修复之上色小技巧
2021/10/16 Python