Java工程源码 类图 定义 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供 一个高层次的接口,使得子系统更易于使用 优点 - 减少系统的相互依赖。所
Java工程源码
类图
定义
要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供
一个高层次的接口,使得子系统更易于使用
优点
- 减少系统的相互依赖。所有的依赖都是对门面对象的依赖,与子系统无关。
- 提高了灵活性。不管子系统内部如何变化,只要不影响门面对象,任你自由活动缺点
- 不符合开闭原则:对修改关闭,对扩展开放
使用场景
- 为一个复杂的模块或子系统提供一个供外界访问的接口
- 子系统相对独立——外界对子系统的访问只是黑箱操作即可
- 预防低水平人员带来的风险扩散
子系统A
public class ClassA {
public void doSomethingA() {
// 业务逻辑
System.out.println("ClassA->doSomethingA()");
}
}
子系统B
public class ClassB {
public void doSomethingB() {
// 业务逻辑
System.out.println("ClassB->doSomethingB()");
}
}
子系统C
public class ClassC {
public void doSomethingC() {
// 业务逻辑
System.out.println("ClassC->doSomethingC()");
}
}
外观对象
public class Facade {
// 被委托的对象
private ClassA a = new ClassA();
private ClassB b = new ClassB();
private ClassC c = new ClassC();
// 提供给外部访问的方法
public void methodA() {
this.a.doSomethingA();
}
public void methodB() {
this.b.doSomethingB();
}
public void methodC() {
this.c.doSomethingC();
}
}
场景类
public class Client {
public static void main(String[] args) {
// 新建外观类
Facade facade = new Facade();
// 执行外观类方法,实际执行子系统的方法
facade.methodA();
facade.methodB();
facade.methodC();
}
}