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

本文共 1983 字,大约阅读时间需要 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设计模式》这本书上给出的例子跟建造者模式太像了,而上边的例子很合适,而且原文讲的也很好。

转载于:https://www.cnblogs.com/orlion/p/5350923.html

你可能感兴趣的文章
Redis之----Redis的数据类型和操作
查看>>
只读字段与标签字段
查看>>
ubuntu修改时区和时间的方法
查看>>
maven实战 读书笔记三#高级程序员进阶之路#
查看>>
硬盘安装windows 7
查看>>
编译器编译原理--详解
查看>>
第五章 择偶
查看>>
用Fiddler模拟低速网络环境
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
Python练习2
查看>>
新安装的python2.7无法加载error while loading shared libraries: libpython2.7.so.1.0
查看>>
js反混淆解密
查看>>
Exchange Server 2010 DAG搭建及灾难恢复部署方案(准备环境)
查看>>
Android使用本地页面调用android代码
查看>>
MyBatise配置使用
查看>>
nodeJS
查看>>
编写易于理解代码的六种方式
查看>>
linux http虚拟主机的实现(3种方法)
查看>>
记ie8 挂起问题
查看>>
heartbeat高可用集群搭建
查看>>