一、定义
外观模式为子系统中的一组解耦提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
理解此模式可以参照经典的三层架构,数据访问层、业务逻辑层、表示层的层与层之间建立外观Facade。这样可以为复杂的子系统提供一个简单的接口,使得耦合大大降低。
二、UML类图
三、实现
- 包装类(客户端调用)
package com.jthao.design.des.facade;
public class Facade {
public SubSystemOne subSystemOne;
public SubSystemTwo subSystemTwo;
public SubSystemThree subSystemThree;
public Facade() {
subSystemOne = new SubSystemOne();
subSystemTwo = new SubSystemTwo();
subSystemThree = new SubSystemThree();
}
public void methodA() {
subSystemOne.methodOne();
subSystemTwo.methodTwo();
}
public void methodB() {
subSystemOne.methodOne();
subSystemThree.methodThree();
}
}
- 实现类A(不对外提供)
package com.jthao.design.des.facade;
public class SubSystemOne {
public void methodOne() {
System.out.println("SubSystemOne 方法");
}
}
- 实现类B(不对外提供)
package com.jthao.design.des.facade;
public class SubSystemTwo {
public void methodTwo() {
System.out.println("SubSystemTwo 方法");
}
}
- 实现类C(不对外提供)
package com.jthao.design.des.facade;
public class SubSystemThree {
public void methodThree() {
System.out.println("SubSystemThree 方法");
}
}
- 测试类
package com.jthao.design.des.facade;
public class FacadeTest {
public static void main(String[] args) {
Facade facade = new Facade();
facade.methodA();
facade.methodB();
}
}