设计模式の外观模式

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

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

下面通过一个例子来简单演示一下外观模式。

假设我们原先有一些方法,用这些方法可以完成向一个好友发送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();

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,554评论 0 17
  • 把当前目录作为Root Document只需要这条命令即可:php -S localhost:3300 也可以指定...
    绚烂的时光阅读 747评论 0 1
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,854评论 2 17
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,782评论 0 11