PHP设计模式——门面模式
门面模式(有时候也称外观模式)是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。
案例:炒股票,新股民不了解证券知识做股票,是很容易亏钱的,需要学习的知识太多了,这样新手最好把炒股的事情委托给基金公司,基金公司了解证券知识,那么新股民把自己的股票托管给基金公司去运营,这样新股民不必了解哪只股票的走势就可以完成股票的买卖。基金公司在这里就是一个门面,针对于新股民的门面。
UML类图:
文章图片
图片.png
角色分析:
门面(FacadeCompany)角色:此角色封装一个高层接口,将客户端的请求代理给适当的子系统对象,是门面模式的核心接口。
子系统(ICBC)角色:实现子系统的具体功能,处理FacadeCompany对象指派的任务。子系统没有FacadeCompany的任何信息,没有对FacadeCompany对象的引用。
具体代码案例:
";
}
function sell()
{
echo "卖出阿里股票
";
}
}
/**万达股票
* Class Wanda
*/
class Wanda
{
function buy()
{
echo "买入万达股票
";
}
function sell()
{
echo "卖出万达股票
";
}
}
/**京东股票
* Class Jingdong
*/
class Jingdong
{
function buy()
{
echo "买入京东股票
";
}
function sell()
{
echo "卖出京东股票
";
}
}
/**门面模式核心角色
* 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)它可以对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。
- 它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。松耦合关系使得子系统的组件变化不会影响到它的客户。 Facade模式有助于建立层次结构系统,也有助于对对象之间的依赖关系分层。
4)Facade模式同样也有利于简化系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。 【PHP设计模式——门面模式】参考:
大话设计模式》,作者程杰
https://blog.csdn.net/jhq0113/article/details/45766991
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术