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.ini中文版(2)
Oct 09 PHP
用PHP和ACCESS写聊天室(三)
Oct 09 PHP
php 友好URL的实现(吐血推荐)
Oct 04 PHP
基于Zookeeper的使用详解
May 02 PHP
PHP实现设计模式中的抽象工厂模式详解
Oct 11 PHP
PHP制作用户注册系统
Oct 23 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
Nov 17 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
php正则提取html图片(img)src地址与任意属性的方法
Feb 08 PHP
php从数据库中读取特定的行(实例)
Jun 02 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 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获取当前所在目录位置的方法
2014/11/26 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
PHP在线书签系统分享
2016/01/04 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
js DOM的学习笔记
2011/12/22 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Flask框架配置与调试操作示例
2018/07/23 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
python版DDOS攻击脚本
2019/06/12 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
基于python实现从尾到头打印链表
2019/11/02 Python
python实现扫雷游戏
2020/03/03 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
新锐科技Java程序员面试题
2016/07/25 面试题
道德大讲堂实施方案
2014/05/14 职场文书
消防安全承诺书
2014/05/22 职场文书
启动仪式策划方案
2014/06/14 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
Python中的pprint模块
2021/11/27 Python