外观模式
发布时间:2020-12-14 04:46:35 所属栏目:百科 来源:网络整理
导读:原文链接:http://www.orlion.ga/744/ 解释: ????通过在必须的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性。 ? 代码: /**?*?外观模式?*?*/?class?SwitchFacade{private?$_light?=?null;?//电灯private?$_ac?=?null;//空
原文链接:http://www.orlion.ga/744/ 解释: ????通过在必须的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性。 ? 代码: /** ?*?外观模式 ?* ?*/ ?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',?'<br/>'; $this->_isOpen?=?1;? } public?function?off()?{ echo?'Light?is?off',?'<br/>'; $this->_isOpen?=?0; } } class?Fan { private?$_isOpen?=?0; public?function?on()?{ echo?'Fan?is?open',?'<br/>'; $this->_isOpen?=?1;? } public?function?off()?{ echo?'Fan?is?off',?'<br/>'; $this->_isOpen?=?0; } } class?AirConditioner { private?$_isOpen?=?0; public?function?on()?{ echo?'AirConditioner?is?open',?'<br/>'; $this->_isOpen?=?1;? } public?function?off()?{ echo?'AirConditioner?is?off',?'<br/>'; $this->_isOpen?=?0; } } class?Television { private?$_isOpen?=?0; public?function?on()?{ echo?'Television?is?open',?'<br/>'; $this->_isOpen?=?1;? } public?function?off()?{ echo?'Television?is?off',?'<br/>'; $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(); ????代码来自:http://blog.csdn.net/hguisu/article/details/7533759,《PHP设计模式》这本书上给出的例子跟建造者模式太像了,而上边的例子很合适,而且原文讲的也很好。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |