外观模式——透过现象看本质
2016-09-06 20:46
555 查看
外观模式用于为复杂系统创建一个简单清晰的接口。
当我们需要使用到子系统的代码时,为了避免过去深入地调用子系统代码而导致后期代码难以维护,减低代码和子系统的耦合性,我们需要在代码和子系统中引入一个入口。实际上就是在子系统代码进行一次封装,那么我们在调用子系统代码的时候就可以通过调用封装的方法来调用,以致于后期修改子系统代码时不会对我们的代码有很大的影响。
下面通过一个例子来简单演示一下外观模式。
假设我们原先有一些方法,用这些方法可以完成向一个好友发送hello,
//寻找目标好友
当我们每次想要找好友say hello的时候,都要调用这一系列方法,如果后期系统升级或者代码修改,都需要修改我们调用这些代码的地方,如果你的代码已经遍布了子系统代码,那么这样的维护升级的工作量将是巨大的。为了避免这种情况,我们使用外观模式来解决这个问题:
在使用的时候,现在我们只需:
为复杂系统创建简单接口的好处是明显的,但是另一方面你可能会过度抽象系统。如果想要使客户端访问代码变得简介或者想把系统中的修改对客户端代码隐藏,使用外观模式吧。
当我们需要使用到子系统的代码时,为了避免过去深入地调用子系统代码而导致后期代码难以维护,减低代码和子系统的耦合性,我们需要在代码和子系统中引入一个入口。实际上就是在子系统代码进行一次封装,那么我们在调用子系统代码的时候就可以通过调用封装的方法来调用,以致于后期修改子系统代码时不会对我们的代码有很大的影响。
下面通过一个例子来简单演示一下外观模式。
假设我们原先有一些方法,用这些方法可以完成向一个好友发送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();
为复杂系统创建简单接口的好处是明显的,但是另一方面你可能会过度抽象系统。如果想要使客户端访问代码变得简介或者想把系统中的修改对客户端代码隐藏,使用外观模式吧。
相关文章推荐
- 透过现象看本质,透析NAC系统几步走(4)
- 程序人生之一 MVC——透过现象看本质
- poj-3013 透过现象看本质,其实都一样
- 透过现象看本质:喧闹的中国电子商务
- zz 透过现象看本质:互联网带来的商业启示
- 透过现象看本质,一个Java多线程问题引出的思考
- 淘宝刷钻为何屡禁不止 透过现象看本质
- 透过现象看本质 - 壮志未酬的BPEL
- 透过现象看本质:如何真正实现数据可视化?
- 透过现象看本质,透析NAC系统几步走(5)
- 好程序员的十大习惯之三 透过现象看本质,抓住最重要的事情
- 好程序员的十大习惯之三 透过现象看本质,抓住最重要的事情
- 程序人生之一 MVC——透过现象看本质
- [转]大道至简:透过现象看本质 - 五
- 透过现象看本质-使用vs.net第二天
- 好程序员的十大习惯之三 透过现象看本质,抓住最重要的事情
- 学会透过现象看本质,即使现象有时候挺诡异
- 透过现象看本质!转自酷客http://coolshell.cn/articles/4102.html