PHP设计模式——门面模式
门面模式(有时候也称外观模式)是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。
案例:炒股票,新股民不了解证券知识做股票,是很容易亏钱的,需要学习的知识太多了,这样新手最好把炒股的事情委托给基金公司,基金公司了解证券知识,那么新股民把自己的股票托管给基金公司去运营,这样新股民不必了解哪只股票的走势就可以完成股票的买卖。基金公司在这里就是一个门面,针对于新股民的门面。
UML类图:
角色分析:
门面(FacadeCompany)角色:此角色封装一个高层接口,将客户端的请求代理给适当的子系统对象,是门面模式的核心接口。
子系统(ICBC)角色:实现子系统的具体功能,处理FacadeCompany对象指派的任务。子系统没有FacadeCompany的任何信息,没有对FacadeCompany对象的引用。
具体代码案例:
?php * Created by PhpStorm. * User: LYL * Date: 2015/5/16 * Time: 11:07 /**阿里股票 * Class Ali class Ali function buy() echo "买入阿里股票 br/ function sell() echo "卖出阿里股票 br/ /**万达股票 * Class Wanda class Wanda function buy() echo "买入万达股票 br/ function sell() echo "卖出万达股票 br/ /**京东股票 * Class Jingdong class Jingdong function buy() echo "买入京东股票 br/ function sell() echo "卖出京东股票 br/ /**门面模式核心角色 * Class FacadeCompany class FacadeCompany private $ali; private $wanda; private $jingdong; function __construct() $this- ali=new Ali(); $this- jingdong=new Jingdong(); $this- wanda=new Wanda(); function buy() $this- wanda- buy(); $this- ali- buy(); function sell() $this- jingdong- sell();客户端调用代码:
header("Content-Type:text/html;charset=utf-8"); //------------------------门面模式测试代码------------------ require_once "./Facade/Facade.php"; $lurenA=new FacadeCompany(); $lurenA- buy(); $lurenA- sell();优势: 1)它可以对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。
2) 它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。松耦合关系使得子系统的组件变化不会影响到它的客户。 Facade模式有助于建立层次结构系统,也有助于对对象之间的依赖关系分层。
3) Facade模式可以消除复杂的循环依赖关系。这一点在客户程序与子系统是分别实现的时候尤为重要。在大型软件系统中降低编译依赖性至关重要。在子系统类改变时,希望尽量减少重编译工作以节省时间。用Facade可以降低编译依赖性,限制重要系统中较小的变化所需的重编译工作。
4)Facade模式同样也有利于简化系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。
PHP+Laravel框架RabbitMQ简单使用(路由模式) 一、简介 路由模式跟发布订阅模式类似,然后在订阅模式的基础上加上了类型,订阅模式是分发到所有绑定到交换机的队列,路由模式只分发到绑定在交换机上面指定路由键的队列
PHP+Laravel框架RabbitMQ简单使用(Pub/Sub模式) 一、简介 publish-and- subscribe, 即发布订阅模型。在Pub/Sub模型中,生产者将消息发布到一个主题(Topic)中,订阅了该Topic的所有下游消费者,都可以接收到这条消息。 每个消息可以有多个订阅者; 客户端只有订阅后才能接收到消息; 持久订阅和非持久订阅。 发布者和订阅者有时间依赖:接受者和发布者只有建立订阅关系才能收到消息; 持久订阅:订阅关系建立后,消息就不会消失,不管订阅者是否都在线; 非持久订阅:订阅者为了接受消息,必须一直在线。 当只有一个订阅者时约等于点对点模式
PHP+Laravel框架RabbitMQ简单使用(工作队列模式(竞争消费者模式)) 工作模式:一个消息生产者,一个交换器,一个消息队列,多个消费者。同样也称为点对点模式 假如我们拥有两个消费者,默认情况下,RabbitMQ 将按顺序将每条消息发送给下一个消费者,平均而言,每个消费者将获得相同数量的消息,这种分发消息的方式称为轮询。 假如有一些非常耗时的任务,某个消费者在缓慢地进行处理,而另一个消费者则空闲,显然是非常消耗资源的。
好1234 在PHP技术圈摸爬滚打四五载,经历了高并发、大数据项目的各种坑,不断的在坑中打磨成长。热衷技术领域:Yii2 、 Mysql 、Redis 、ElasticSearch 、Nginx、设计模式、分布式存储、分布式编程,对面向对象编程有比较独到的见解,重视团队协作。
相关文章
- php 设计模式之观察者模式
- 精品基于PHP实现的剧影评|剧评影评系统
- PHP——JWT与Token区别
- Apache+PHP多端口多站点
- php有三种工作模式
- 【PHP】接口返回统一值
- 【PHP报错集锦】Integrity constraint violation: 1052 Column 'vt_id' in where clause is ambiguous
- PHP 设计模式之工厂模式 (静态工厂模式)
- PHP实现并发请求
- php实现工厂模式
- php:header函数的作用
- 1.3 PHP核心配置详解
- php学习日志(2)-php变量
- PHP设计模式——职责链模式
- PHP设计模式——备忘录模式
- PHP设计模式——中介者模式
- PHP设计模式——迭代器模式
- PHP设计模式——命令模式
- PHP设计模式——观察者模式
- PHP设计模式——解释器模式
- PHP设计模式——代理模式
- PHP设计模式——组合器模式
- PHP设计模式——桥接模式
- PHP设计模式——建造者模式
- C++ 与 php 的交互 之----- C++ 获取 网页文字内容,获取 php 的 echo 值。