Android日记之2012/02/09——浅谈设计模式facade

来源:互联网 发布:mac 双分区 双系统 编辑:程序博客网 时间:2024/06/04 18:35
       最近在看些设计模式facade的文章,也做个总结吧,如果说,写的不好,希望大家指正~~~谢谢~~~

       其实,感觉设计模式的东西比较难写,理论性比较强,就这么干巴巴的写理论,自己写的没意思,看的人也觉得没意思,但是要一下子写个Demo来具体说明一下,有感觉有点无从下手的感觉,也嫌写着麻烦。。。。。。就谈谈自己的理解吧。

       在说facade前,让我们先想想这样的场景。我们一般去医院看病的话,一般按照这样的步骤:1、挂号;2、去找医生;3、如果说病情不明的,还要去验个血;4、再回到医生那让医生对症下药;5、付款、取药。

       其实,我们整件事情做下来,无非是想知道自己得了什么病,该买什么药来治病,之间的找哪位医生啊,去验血啊,都不是我们想要关心的。那我们能不能这样,在医院里放个小机器人(可采血),我们滴一两滴血给小机器人,让它帮我们去挂号、验血、找医生、拿药过来,我们就只要在大厅里坐等小机器人过来,付款,拿药。这样下来,我们同样可以知道自己得了什么病,该买什么药来治病。但我们和医院的各个部门的接触就少了(程序中就是减少耦合),那这个小机器人,就是facade。

       Facade的理论介绍是这么写的:为子系统提供了一个更高层次、更简单的接口,从而降低了子系统的复杂度和依赖,这使得子系统更易于使用和管理。降低了子系统和客户的耦合度。

       对此,我们可以用一些项目来说明。最简单的,程序的前后台。用户通过访问程序的前台来获得数据,但是用户可以不用知道前台是如何和后台交互的。也就是说,用户得到了自己想要的数据,和程序至交互了一次。这就是运用了facade设计模式。如果不用呢?那用户就是把后台需要的方法一个一个调用过来,无疑就是增加了耦合度。而面向对象中就提到了高内聚、低耦合(这里就不扩展了,要不然就太庞大了。。。。。)。

       难道说facade设计模式就如此简单?非也,这只是举些大家都熟悉的例子而已。其实,难就难在我们如何在代码中把这种思想运用进去。我们可以把一个类看作是客户,它需要使用另外几个类来处理一个数据,那这几个类,我们就可以为它们写个接口,来作为他们的前台,那这个客户类就只需要与这个前台交互,就能得到所需要的数据。