JAVA设计模式之外观模式

来源:互联网 发布:js div隐藏与显示 编辑:程序博客网 时间:2024/05/17 02:08

1. 什么是外观模式?

        《Head First设计模式》中定义,提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,使子系统更容易使用。

        外观模式可以让客户和子系统之间避免紧密耦合,避开子系统复杂的接口调用关系,直接访问一个简单接口。

        外观模式没有“封装”子系统,只是提供了一个简化的访问接口,将子系统的功能完整的暴露出来,以供使用。

2. 角色

        客户端(Client):需要使用复杂子系统的角色,在没有外观接口的时候需要自己处理复杂的调用关系。

        外观角色(facade):提供客户端能够调用的简单接口。外观角色能够将客户端的访问请求转交给子系统相应的模块进行处理。

        子系统角色(Subsystem):可以有一个或多个子系统角色存在,一个子系统是多个类的集合,能实现子系统功能。子系统可以直接被客户端调用,也可以被外观角色调用。子系统并不知道外观角色的存在。

 

图片来自《Head First设计模式》

3. 优点

(1)提供简单的接口将子系统的功能暴露给客户端,将客户端和子系统进行解耦。

(2)提高系统的灵活性,客户端不用理解子系统的所有功能,子需要知道外观暴露的功能接口,将请求交给外观,外观再转交给子系统中相应模块进行处理。

(3)提高了系统安全性,客户端不用自己去访问子系统底层(也可以自己访问),大大提高了系统的安全性。

4. 缺点

(1)违背了开闭原则,如果设计不当,新增子系统可能会修改外观类。

(2)没有限制客户端直接使用子系统。

5. 使用场景

(1)当要为一系列复杂子系统提供一个简单的访问入口时,可以使用外观模式。

(2)客户端与多个子系统之间存在很强的依赖性,可以使用外观模式将客户端和子系统之间进行解耦,提高系统的灵活性。

【四川乐山程序员联盟,欢迎大家加群相互交流学习5 7 1 8 1 4 7 4 3】

原创粉丝点击