Design Pattern Explained 读书笔记三——Facade

来源:互联网 发布:papi酱软件 编辑:程序博客网 时间:2024/05/19 23:54

what?

Provide a unified interface to a set of interfaces in a sub- system.
Facade defines a higher-level interface that makes the subsystem
easier to use. ——GOF

给子系统中的一堆接口提供一个统一,标准的接口——更高层次的接口——这样使得子系统更易于使用。

UML结构图
Facade模式的特点:
对应的译文:

意图:         希望简化原有系统的使用方式。需要定义自己的接口。问题(应用场景):       只需要使用某个复杂系统的子集,或者,需要以一种特殊的方式与系统交互。解决方案:     Facade 为原有系统的客户提供了一个新的接口。参与者与协作者:     为客户提供的一个简化接口,使系统更容易使用。效果:         Facade 模式简化了对所需子系统的使用过程。但是,由于Facade 并不完整,因此客户可能无法使用某些功能。实现: 定义一个(或多个)具备所需接口的新类。让新的类使用原有的系统。

这里写图片描述

where?

● 不需要使用一个复杂系统的所有功能,而且可以创建一个新的类,包
含访问系统的所有规则。如果只需要使用系统的部分功能(这是通常的情况) ,
那么你为新类所创建的 API将比原系统的 API 简单得多。
● 希望封装或者隐藏原系统。
● 希望使用原系统的功能,而且还希望增加一些新的功能。
● 编写新类的成本小于所有人学会使用或者未来维护原系统上所需的
成本。

why?

比如你要去欧洲五国游玩,通常你应该去当地办理相关出境手续、再去订去本国到A国的机票、然后到了A国,订A国到B国的机票…….还要订酒店、购买门票、找当地特色餐饮……
现在你只要去旅行社购买一个欧洲五国游的产品就行了!你不用关心机票怎么订、酒店怎么订、等等服务。你只要对旅行社说:我购买欧洲五国游!就可以实现

how?

客户端根据需要在原有系统的基础上使用facade模式中新的接口,客户端通过facade的接口完成对系统的使用,并不需要了解底层服务代码(或者交互).
如果需要在系统之外添加新的功能,依旧适用Facade模式.

disadvantages?

我们使用facade来简化对原有复杂系统的使用,也造成了原有系统某些接口对客户端屏蔽.

1 0
原创粉丝点击