设计模式系列:搞懂门面模式,对外统一出口

发布于 2021-04-08 10:24

门面模式的定义:为多个复杂的子系统提供一个统一的接口,使这些子系统更加容易被访问。属于结构型模式。

门面模式的特点:门面模式对外有一个统一的接口,客户端不用关心内部子系统的具体细节,使调用变得更容易,降低应用程序的复杂度,提高了程序的可维护性。

门面模式的实现:

//子模块Apublic class SubModuleA {    public void doA(){        System.out.println("子模块A的被调用!");    }} //子模块Bpublic class SubModuleB {    public void doB(){        System.out.println("子模块B的被调用!");    }} //子模块Cpublic class SubModuleC {    public void doC(){        System.out.println("子模块C的被调用!");    }} //门面类public class Facade {    private SubModuleA subModuleA = new SubModuleA();    private SubModuleB subModuleB = new SubModuleB();    private SubModuleC subModuleC = new SubModuleC();     public void doing() {        subModuleA.doA();        subModuleB.doB();        subModuleC.doC();    }} //测试类public class FacadeTest {    public static void main(String[] args) {        Facade facade = new Facade();        facade.doing();    }}

门面模式的结构图:

门面模式的优点:

1、简化调用过程,降低了子系统与客户端之间的耦合度。

2、减少系统间的依赖关系,松散耦合。

3、遵循迪米特法则(最小知道原则)。

门面模式的缺点:

1、增加子系统或扩展子系统功能时容易带来未知风险。

2、增加新的子系统可能需要修改门面类或客户端的代码,违背“开闭原则”。

3、门面类功能过多时可能违反单一职责。

门面模式的使用场景:

1、对分层结构系统构建时,使用门面模式定义子系统中每层的入口点可以简化子系统之间的依赖关系。

2、当一个复杂系统的子系统很多时,门面模式可以为系统设计一个简单的接口供客户端访问。

3、当客户端与多个子系统之间存在很大的联系时,门面模式可将它们分离,从而提高子系统的独立性和可移植性。

门面模式与代理模式的区别:门面模式重在对子系统的封装,代理模式重在对被代理类的增强。

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材