<?php
/**
* 桥接模式
* 应用场景:https://zhuanlan.zhihu.com/p/58903776
* 作用:当产生类的因素分布在二维坐标系,可以将原来需要x*y个类减少为x+y个类
* 举例:发消息:x轴(短信,email),y轴:消息紧急程序(一般,紧急,十分火急),如果每个类型都写一个类就是6个,如果用桥接模式就只有5个,维度数据越大优势越明显
*/
//信件类型
interface msg
{
public function send($to, $msg);
}
运行结果:
发email给小明,普通:上班了
class telMsg implements msg
{
public function send($to, $msg)
{
echo "发短信给{$to},{$msg}<br/>";
}
}
class emailMsg implements msg
{
public function send($to, $msg)
{
echo "发email给{$to},{$msg}<br/>";
}
}
//紧急程度
abstract class info
{
protected $msg = null;
public function __construct(msg $msg)
{
$this->msg = $msg;
}
abstract public function msg($content);
public function send($to, $content)
{
$this->msg->send($to, $this->msg($content));
}
}
class normalInfo extends info
{
public function msg($content)
{
return '普通:' . $content;
}
}
class urgentInfo extends info
{
public function msg($content)
{
return '紧急:' . $content;
}
}
class veryUrgentInfo extends info
{
public function msg($content)
{
return '十万火急:' . $content;
}
}
$normal = new normalInfo(new emailMsg());
$normal->send('小明', '上班了');
- 相关文章
- php设计模式-观察者模式及应用场景
- php设计模式-职责链模式及应用场景
- php设计模式-策略模式及应用场景举
- php设计模式-装饰器模式及应用场景
- php设计模式-适配器模式及应用场景
- php设计模式-单例模式
- php设计模式-工厂模式
- 热门文章
- win7中将文件拷贝到虚拟机linux下
- phpexcel设置行高及列宽,背景颜色,
- rabbitmq无法启动
- intellij idea不显示git push按钮
- php7中使用mongodb的aggregate进行
- centos7.4 64位下swoole安装及配置
- laravel页面静态化的方法
- navicate连接mycat报1184错误
- 单点登录sso原理及php实现方式及de
- devops-jenkins容器为pending状态
- 好评文章
- phpexcel设置行高及列宽,背景颜色,
- php7中使用mongodb的aggregate进行
- intellij idea打开文件所在文件夹
- windows下使用MongoDB Compass Com
- win7中将文件拷贝到虚拟机linux下
- laravel 中悲观锁 & 乐观锁的使用
- 单点登录sso原理及php实现方式及de
- navicate连接mycat报1184错误
- rabbitmq无法启动
- laravel整合dingo/api方法步骤:jwt
- 我的项目
- 【github】www.github.com/hurong241
- 【码云】gitee.com/hu_rong/projects
- 【docker hub】hub.docker.com/repositories/hurong241
- 【packagist】packagist.org/users/hurong241/packages
- 站点信息
- 建站时间:2011年
- 文章数:607篇
- 浏览数:941861