您的位置:首页 > 编程语言 > PHP开发

初识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
/**
* 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();
}
}
输出结果:
买入两室一厅的房子。
高收益卖出房子。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息