外观模式(Facade),凡事不用亲力亲为,把事情交给擅长的人去办就OK了
package com.fumeck.design.facade;
/**
* 外观类
*/
public class Facade {
private SubSystemA subSystemA;
private SubSystemB subSystemB;
private SubSystemC subSystemC;
public Facade() {
subSystemA = new SubSystemA();
subSystemB = new SubSystemB();
subSystemC = new SubSystemC();
}
public void methodA(){
subSystemA.methodOne();
subSystemB.methodTwo();
}
public void methodB(){
subSystemB.methodTwo();
subSystemC.methodThree();
}
}
public class SubSystemA {
public void methodOne(){
System.out.println("我是a");
}
}
public class SubSystemB {
public void methodTwo(){
System.out.println("我是b");
}
}
public class SubSystemC {
public void methodThree(){
System.out.println("我是c");
}
}
package com.fumeck.design.facade;
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
//只需调用外观方法A,具体的内部细节我不管
facade.methodA();
}
}
控制台console:
我是a
我是b
总结:子类的子集统一由外观类Facade进行管理,并组合成各种不同的方式我们只需调用即可
在开发中经常遇到的问题就是在原有的业务上增值其他项,这时可以使用外观模式就原有的业务和增值项封装到外观类的方法内即可