外观模式——透过现象看本质

外观模式用于为复杂系统创建一个简单清晰的接口。

当我们需要使用到子系统的代码时,为了避免过去深入地调用子系统代码而导致后期代码难以维护,减低代码和子系统的耦合性,我们需要在代码和子系统中引入一个入口。实际上就是在子系统代码进行一次封装,那么我们在调用子系统代码的时候就可以通过调用封装的方法来调用,以致于后期修改子系统代码时不会对我们的代码有很大的影响。

下面通过一个例子来简单演示一下外观模式。
假设我们原先有一些方法,用这些方法可以完成向一个好友发送hello,

//寻找目标好友

function searchFriend($name){
    echo "寻找目标好友:$name";
}
//打开聊天窗口
function openWindow($name){  
    echo "打开$name的聊天窗口";
};
//发送hello
function sayHello(){
    echo "sayhello";
}

当我们每次想要找好友say hello的时候,都要调用这一系列方法,如果后期系统升级或者代码修改,都需要修改我们调用这些代码的地方,如果你的代码已经遍布了子系统代码,那么这样的维护升级的工作量将是巨大的。为了避免这种情况,我们使用外观模式来解决这个问题:

class chatFacade{
       private $name;
       public function __construct($friend){ 
          $this->name=$friend;
       }
       public function chat(){
          searchFriend($this->name);
          openWindow($this->name);
          sayHello();
       }
}

在使用的时候,现在我们只需:

$obj=new chatFacade('manyhong');
$obj->chat();

为复杂系统创建简单接口的好处是明显的,但是另一方面你可能会过度抽象系统。如果想要使客户端访问代码变得简介或者想把系统中的修改对客户端代码隐藏,使用外观模式吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值