初识PHP设计模式--外观模式
2018-01-25 11:58
661 查看
外观模式(Facade) 属于7种结构型模式中比较好理解的一种模式,
主要作用是为客户端提供一个统一的接口,不需要用户自己去创建各子类然后调用他们的方法。
好处是把子系统的逻辑和交互都隐藏了起来,缺点是每添加一个子类,都有可能要修改外观类(违反开闭原则)。
起初学习外观模式的时候有点和之前学习过的简单工厂模式混淆。
因为它们的结构还挺像的,都是提供一个统一的接口,之后看了些资料进行了对比。
就像是房产中介,你到了中介说要买一个二室一厅的房子,中介就给你提供一个二室一厅的房子。
外观模式更像是高级私人订制。
你到了中介说要买一个房子,中介根据各种情况的衡量,最后给你提供一个两室一厅的房子。
<?php
header("Content-Type:text/html;charset=utf-8");
// 外观模式 index.php
require_once "Facade.php";
// 实例化外观类
$Client = new Facade();
// 直接调用给出方案
$Client->buy();
$Client->sell();
主要作用是为客户端提供一个统一的接口,不需要用户自己去创建各子类然后调用他们的方法。
好处是把子系统的逻辑和交互都隐藏了起来,缺点是每添加一个子类,都有可能要修改外观类(违反开闭原则)。
起初学习外观模式的时候有点和之前学习过的简单工厂模式混淆。
因为它们的结构还挺像的,都是提供一个统一的接口,之后看了些资料进行了对比。
区别
简单工厂属于创建型模式,更注重创建对象,根据客户端提供的要求,创建相应的对象。就像是房产中介,你到了中介说要买一个二室一厅的房子,中介就给你提供一个二室一厅的房子。
外观模式更像是高级私人订制。
你到了中介说要买一个房子,中介根据各种情况的衡量,最后给你提供一个两室一厅的房子。
<?php
header("Content-Type:text/html;charset=utf-8");
// 外观模式 index.php
require_once "Facade.php";
// 实例化外观类
$Client = new Facade();
// 直接调用给出方案
$Client->buy();
$Client->sell();
<?php /** * Created by Sublime. * User: Ryan * Date: 2018/1/25 * File:Facade.php */ /** 买房 子类 * BuyHouse */ Class BuyHouse { function planA(){ echo "买入一室一厅的房子。<br/>"; } function planB(){ echo "买入两室一厅的房子。<br/>"; } function planC(){ echo "买入别墅。<br/>"; } } /** 卖房 子类 * SellHouse */ Class SellHouse { function planA(){ echo "高收益卖出房子。<br/>"; } function planB(){ echo "低收益卖出房子。<br/>"; } } /** 统一接口 外观类 * Facade */ Class Facade { private $BuyHouse; private $SellHouse; function __construct(){ $this->BuyHouse = new BuyHouse(); $this->SellHouse = new SellHouse(); } function buy(){ $this->BuyHouse->planB(); } function sell(){ $this->SellHouse->planA(); } }
输出结果:
买入两室一厅的房子。 高收益卖出房子。
相关文章推荐
- 初识PHP设计模式--职责链模式
- 初识PHP设计模式--中介者模式
- 初识PHP设计模式--模板方法模式
- 初识PHP设计模式--工厂方法
- 初识设计模式 chapter 07-适配器模式与外观模式
- PHP设计模式 外观设计模式
- 初识PHP设计模式--抽象工厂
- 初识PHP设计模式--命令模式
- php 设计模式之 代理模式,适配器模式,外观模式
- 初识PHP设计模式--迭代器模式
- [php]php设计模式 Facade(外观模式)
- PHP设计模式系列 - 外观模式
- 初识PHP设计模式--建造者模式
- PHP草根论之设计 模式-外观模式
- 初识PHP设计模式--观察者模式
- 初识PHP设计模式--代理模式
- php设计模式之Proxy(代理模式)和Facade(外观)设计模式
- PHP设计模式之装饰器模式,委托模式,外观模式
- PHP设计模式系列 - 外观模式
- PHP设计模式之装饰器模式,委托模式,外观模式