门面模式详解附有代码案例分析

一、门面模式的概念和角色

(一)、门面模式的概念

​ 门面模式又叫外观模式,提供了一个统一的接口,用来访问子系统中的一群接口。其主要特征是定义了一个高层接口,让子系统更容易使用,属于结构式模式。

门面模式的本质就是化零为整,引入一个中介类,把各个纷繁的功能组合成一个整体,只对外暴露一个统一的接口。

目的:为了用户使用方便,把过度拆分的分散功能,组合成要给整体,对外提供一个统一的接口。

(二)、门面模式的角色

1、外观角色(Facade):系统对外的统一接口。

2、子系统角色(SubSystem):可以同时有一个或多个SubSystem。每个SubSytem都不是一个单独的类,而是一个类的集合。SubSystem并不知道Facade,对于SubSystem而言,Facade只是另一个客户端而已(即Facade对SubSystem透明)。

二、门面模式的使用场景

1、简化复杂子系统

2、监控所有子系统,通过门面控制入口,统一监控

3、封装和隐藏子系统

4、两系统进行改造并打通关系

三、门面模式的通用写法

子系统角色A:SubSystemA

public class SubSystemA {
    
    
    public void methodA() {
    
    
        System.out.println("A");
    }
}

子系统角色B:SubSystemB

public class SubSystemB {
    
    
    public void methodB() {
    
    
        System.out.println("B");
    }
}

子系统角色C:SubSystemC

public class SubSystemC {
    
    
    public void methodC() {
    
    
        System.out.println("C");
    }
}

外观角色:Facade

public class Facade {
    
    
    private SubSystemA a = new SubSystemA();
    private SubSystemB b = new SubSystemB();
    private SubSystemC c = new SubSystemC();

    public void methodA() {
    
    
        this.a.methodA();
    }

    public void methodB() {
    
    
        this.b.methodB();
    }

    public void methodC() {
    
    
        this.c.methodC();
    }
}

客户端:Main

public class Main {
    
    

    public static void main(String[] args) {
    
    
        Facade facade = new Facade();
        facade.methodA();
        facade.methodB();
        facade.methodC();
    }
}

四、门面模式的优缺点

(一)、优点:

1、简化了调用过程,无需深入了解子系统,以防给子系统带来风险

2、减少系统依赖,松散耦合

3、更好地划分访问层次,提高了安全性

4、遵循迪米特法则,即最少知道原则

(二)、缺点

1、当增加子系统和扩展子系统行为时,可能容易带来未知风险

2、不符合开闭原则

3、某些情况下可能违背单一职责

猜你喜欢

转载自blog.csdn.net/hyyyya/article/details/108982694