0%

门面模式

门面模式

也叫外观模式,为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,其本质是封装交互,简化调用

对外统一接口

外观模式

核心概念

  • 外观角色 客户端可以调用这个角色的方法,此角色知晓子系统的功能和职责,会将客户端的请求委派到相应的子系统去
  • 子系统角色 可以同时有一个或多个子系统,子系统并不知道外观角色的存在,对于子系统而言,外观角色也只是一个客户端而已
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class SubSysOne{
public void method1(){
System.out.println("子系统方法一");
}
}

public class SubSysTwo{
public void method2(){
System.out.println("子系统方法二");
}
}

// 外观类
public class Facade{
SubSysOne subSysOne;
SubSysTwo subSysTwo;

public Facade(){
subSysOne = new SubSysOne();
subSysTwo = new SubSysTwo();
}

public void method(){
subSysOne.method1();
subSysTwo.method2();
}
}

优缺点

优点

  • 实现了子系统和客户端之间的松耦合
  • 客户端屏蔽了子系统组件,减少了客户端需要处理的对象数目

缺点

  • 过多的Facade容易让人迷惑

使用场景

  • 为一个复杂的模块或子系统提供一个供外界访问的接口,便于它的使用
  • 让客户程序和抽象类的实现部分松散耦合,将子系统与客户端分离开
  • 构建多层结构的系统,使用外观对象作为每层的入口
  • 为一组类提供一个简单的接口

欢迎关注我的其它发布渠道