博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
外观模式
阅读量:5903 次
发布时间:2019-06-19

本文共 1933 字,大约阅读时间需要 6 分钟。

原文链接:

解释:

    通过在必须的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性。

 

代码:

/** * 外观模式 * */ class SwitchFacade{	private $_light 	= null;	 	//电灯	private $_ac	 	= null;		//空调	private $_fan	 	= null;		//电扇	private $_tv	 	= null;		//电视		public function __construct()	{		$this->_light = new Light();		$this->_fan = new Fan();		$this->_ac = new AirConditioner();		$this->_tv = new Television();	}	/**	 * 晚上开电灯	 *	 */	public function method1($isOpen =1) {		if ($isOpen == 1) {			$this->_light->on();			$this->_fan->on();			$this->_ac->on();			$this->_tv->on();		}else{			$this->_light->off();			$this->_fan->off();			$this->_ac->off();			$this->_tv->off();		}	}	/**	 * 白天不需要电灯	 *	 */	public function method2() {		if ($isOpen == 1) {			$this->_fan->on();			$this->_ac->on();			$this->_tv->on();		}else{			$this->_fan->off();			$this->_ac->off();			$this->_tv->off();		}	}}/******************************************子系统类 ************//** * */ class Light{		private $_isOpen = 0;	public function on() {		echo 'Light is open', '
'; $this->_isOpen = 1;  } public function off() { echo 'Light is off', '
'; $this->_isOpen = 0; }}class Fan{ private $_isOpen = 0; public function on() { echo 'Fan is open', '
'; $this->_isOpen = 1;  } public function off() { echo 'Fan is off', '
'; $this->_isOpen = 0; }}class AirConditioner{ private $_isOpen = 0; public function on() { echo 'AirConditioner is open', '
'; $this->_isOpen = 1;  } public function off() { echo 'AirConditioner is off', '
'; $this->_isOpen = 0; }}class Television{ private $_isOpen = 0; public function on() { echo 'Television is open', '
'; $this->_isOpen = 1;  } public function off() { echo 'Television is off', '
'; $this->_isOpen = 0; }}/** * 客户类 * */class client { static function open() { $f = new  SwitchFacade(); $f->method1(1); } static function close() { $f = new  SwitchFacade(); $f->method1(0); }}client::open();

    代码来自:,《PHP设计模式》这本书上给出的例子跟建造者模式太像了,而上边的例子很合适,而且原文讲的也很好。

转载地址:http://kqkpx.baihongyu.com/

你可能感兴趣的文章
JAXB
查看>>
端口聚合配置
查看>>
访问共享经常中断
查看>>
当你有一个锤子,你看什么都像钉子
查看>>
一个很实用的samba案例
查看>>
人生的交易
查看>>
TP5中关联模型的使用详解
查看>>
springMVC注解之入门
查看>>
不用花钱!Android模拟器让你在电脑上免费体验谷歌手机
查看>>
MySql
查看>>
算法分析与设计——贪心法实验报告
查看>>
js时间戳与日期格式的相互转换
查看>>
POJ - 1062 昂贵的聘礼(Dijkstra)
查看>>
Java多态和动态绑定是如何实现的
查看>>
sql server 下载安装标记
查看>>
Android学习6—单元测试的使用
查看>>
js运算符(运算符的结合性)
查看>>
最长上升子序列问题
查看>>
C#中的析构函数
查看>>
Python基础—基础数据类型list(Day4)
查看>>