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 in_array 函数使用说明与in_array需要注意的地方说明
Apr 13 PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
PHP的Socket网络编程入门指引
Aug 11 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
php+ajax简单实现全选删除的方法
Dec 06 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 PHP
PHP遍历数组的6种方式总结
Nov 17 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文件上传、下载和删除示例
2020/08/28 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
2017/01/03 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
layui分页效果实现代码
2017/05/19 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
Python递归遍历列表及输出的实现方法
2015/05/19 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
python入门之井字棋小游戏
2020/03/05 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
汽车维修工岗位职责
2014/02/12 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
保管员岗位职责
2015/02/14 职场文书
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python
JavaScript 对象创建的3种方法
2021/11/17 Javascript