首页 > 作文

PHP设计模式之外观模式(Facade)入门与应用详解

更新时间:2023-04-08 04:18:21 阅读: 评论:0

本文实例讲述了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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图