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);

最新文章

  1. asp.net mvc bootstrap datatable 服务端分页
  2. 软件工程-构建之法 WordCount小程序 统计文件中字符串个数,单词个数,词频,行数
  3. Android 布局中 如何使控件居中
  4. nginx配置文件nginx.conf
  5. fancybox,Ckeditor,jscrollpane 笔记串烧
  6. matlab中num2str的应用
  7. Dealloc 在哪个线程执行
  8. Hadoop-2.4.1完全分布式环境搭建
  9. 在react中引入下拉刷新和上拉加载
  10. JavaBasic_正则表达式
  11. hdu 4714 树+DFS
  12. DataFrame WordCount
  13. SQLite之C#连接SQLite
  14. Linux 实现与宿主机共享文件夹 Centos7
  15. jquery源码学习
  16. [转]Oracle中Hint深入理解
  17. Chrome在Ubuntu中缺少依赖项,无法安装
  18. Using DirectShow------------------msdn
  19. Linux进程管理之“四大名捕”
  20. 让windows登陆界面显示administrator账户

热门文章

  1. EventBus 报“Subscriber class already registered to event class”错误
  2. Android Activity生命周期的几个问题
  3. kde framework概述(KDE Framework译文)
  4. 我来解数独(附delphi源码)
  5. innerHTML的性能问题
  6. 关于ie的内存泄漏与javascript内存释放
  7. JAVA之NIO按行读取大文件
  8. 解决jenkins插件列表为空的问题
  9. 简洁的KVO -- 使用Block响应事件
  10. MySQL数据表查询操作