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 相关文章推荐
session 的生命周期是多长
Oct 09 PHP
php自动注册登录验证机制实现代码
Dec 20 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
php比较多维数组中值的大小排序实现代码
Sep 08 PHP
6种php上传图片重命名的方法实例
Nov 04 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
ThinkPHP视图查询详解
Jun 30 PHP
php实现分页显示
Nov 03 PHP
使用Huagepage和PGO来提升PHP7的执行性能
Nov 30 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
php正确输出json数据的实例讲解
Aug 21 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 09 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操作memcache缓存方法分享
2015/06/03 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
详解如何用python实现一个简单下载器的服务端和客户端
2019/10/28 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
市场营销专业推荐信
2013/11/03 职场文书
营销人才自我鉴定范文
2013/12/25 职场文书
2014植树节活动总结
2014/03/11 职场文书
优秀教师演讲稿
2014/05/06 职场文书
建筑学专业自荐书
2014/07/09 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
停水通知
2015/04/16 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
开网店计划分析
2019/07/30 职场文书