初识PHP设计模式--外观模式

 外观模式(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();
	}
}
输出结果:
买入两室一厅的房子。
高收益卖出房子。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值