一、什么是外观模式?
外观模式(Facade)定义:为子系统中的一组接口提供一个一致的界面,些模式定义了一个高层接口。这个接口使得这一子系统更加容易使用。
类型:结构型模式
顺口溜:适装桥组享代外
二、外观模式UML
三、JAVA代码实现
package com.amosli.dp.structural.facade;
public class Facade {
SubsystemOne one;
SubsystemTwo two;
SubsystemThree three;
public Facade() {
one = new SubsystemOne();
two = new SubsystemTwo();
three = new SubsystemThree();
}
public void methodA() {
System.out.println("group A:");
one.operation1();
two.operation2();
}
public void methodB() {
System.out.println("group B:");
three.operation3();
}
}
package com.amosli.dp.structural.facade;
public class SubsystemOne {
public void operation1(){
System.out.println("deal 1 part...");
}
}
package com.amosli.dp.structural.facade;
public class SubsystemTwo {
public void operation2(){
System.out.println("deal 2 part...");
}
}
package com.amosli.dp.structural.facade;
public class SubsystemThree {
public void operation3(){
System.out.println("deal 3 part...");
}
}
package com.amosli.dp.structural.facade;
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.methodA();
facade.methodB();
}
}
四、使用场景
在以下情况下可以考虑使用外观模式:
(1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
(2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
(3) 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
五、源码地址
本系列文章源码地址,https://github.com/amosli/dp 欢迎Fork & Star !!