本文实例讲述了php设计模式之外观模式(facade)入门与应用。分享给大家供大家参考,具体如下:
这个外观模式,就是通过在必需的逻辑和方法的集合前创建简单的外观接口,并且还会隐藏了调用对象的复杂性,它和建造者模式非常相似,建造者模式一般是简化对象的调用的复杂性,但是外观模式一般是简化含有很多逻辑步骤和方法调用的复杂性。
来看下实例,先来描述下:
设计一个ur类,里面有getur获取用户信息接口在使用getur这个接口的时候,需要设置用户的用户名和用户年龄所以在正常情况下,调用getur接口,需要先实例化ur类,然后设置用户信息,最后才调用getur方法,这个过程是复杂的,如果用户信息非常多的话,或者不断变化的话,调用用户信息类将是维护成本很大的事情,比如,随着业务扩展又添加了用户手机,住址,体重,婚否等信息。设计了一个urfacade,里面有一个静态方法geturcall,这个方法可以直接调用getur函数。来看下代码:
<?php//外观模式,通过在必须的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性class ur { protected $urname; protected $urage; public function turname($urname) { return $this->urname = $urname; } public function turage($urage) { return $this->urage = $urage; } public function getur() { echo '用户姓名:' . $this->urname . '; 用户年龄:' . $this->urage; }}//创建一个ur 类调用接口,简化获取用户getur方法的调用class urfacade { public staapec是什么组织tic function geturcall($urinfo) { $ur = new ur; $ur->turname($urinfo['urname']); $ur->turage($urinfo['urage']); return $ur->getur(); }}$urinfo = array('urname' => 'initphp', 'urage' => 12);urfacade::geturcall($urinfo); //只要一个函数就能将调用类简化
上述实例是网上一个比较经每天进步一点点典的案例,很容易理解。
这个外观模式的有点如下:
(1)对于调用者来说,访问代码变得简洁、非常方便
(2)由于只在一个地方调用子系统,减少了出错的可能
(3)facade类还能使调用者避免不正确地使用内部方法,从而减少错误的发生
来看下结构图:
还有两张图,大家一起看下吧:
最后咱们参考一个网上的例子,设计一个商场统一购买家电和家具的场景,如下:
//家电-冰箱class bingxiang{/*{{{*/ public function buy() { echo "买冰箱\r\n"; }}/*}}}*///家电-洗衣机class xiyiji{/*{{{*/ public function buy() { echo "买洗衣机\r\n"; }}/*}}}*///家具-创class chuang{/*{{{*/ public func春节放鞭炮作文tion buy() { echo "买床\r\n"; }}/*}}}*///家具-衣柜class yigui{/*{{{*/ public function buy() { echo "买衣柜\r\n"; }}/*}}}*///商场(facade)class shangchang{/*{{{*/ public $bingxiang; public $xiyiji; public $chuang; public $yigui; public function __construct() { $this->bingxiang = ne宣言胡彦斌w bingxiang(); $this->xiyiji = new xiyiji(); $this->chuang = new chuang(); $this->yigui = new yigui(); } //家电 public function buyjiadian() {/*{{{*/ $this->bingxiang->buy(); $this->xiyiji->buy(); }/*}}}*/ //家具 public function buyjiaju() {/*{{{*/ $this->chuang->buy(); $this->yigui->buy(); }/*}}}*/}/*}}}*/class client{/*{{{*/ public static function main($argv) { $shangchang = new shangchang(); //买家电 $shangchang->buyjiadian(); //买家具 $shangchang->buyjiaju(); }}/*}}}*/client::main($argv);?>
输出结果大家可以自己手动试下。
好啦,本次记朱颖婷录就到这里了。
本文发布于:2023-04-08 04:18:19,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/7e93e2cd9148c9d70754a0c20ea90d20.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP设计模式之外观模式(Facade)入门与应用详解.doc
本文 PDF 下载地址:PHP设计模式之外观模式(Facade)入门与应用详解.pdf
留言与评论(共有 0 条评论) |