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 程序员也要学会使用“异常”
Jun 16 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
php中hashtable实现示例分享
Feb 13 PHP
跟我学Laravel之路由
Oct 15 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
php函数连续调用实例分析
Jul 30 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
PHP用函数嵌入网站访问量计数器
Oct 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
有关PHP性能优化的介绍
2013/06/20 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
在Python中调用ggplot的三种方法
2015/04/08 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Python 中的lambda函数介绍
2018/10/10 Python
python实现简易数码时钟
2021/02/19 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
python单例设计模式实现解析
2020/01/07 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
python中shell执行知识点
2020/05/06 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
亿企通软件测试面试题
2012/04/10 面试题
中国梦的演讲稿
2014/01/08 职场文书
教师申诉制度
2014/01/29 职场文书
员工晚婚的请假条
2014/02/08 职场文书
大学辅导员述职报告
2015/01/10 职场文书
如何写通讯稿
2015/07/22 职场文书
2016年大学生社会实践心得体会
2015/10/09 职场文书
优质护理心得体会
2016/01/22 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
Python深度学习之实现卷积神经网络
2021/06/05 Python