给诸多子功能分组封装调用,隐藏子功能细节。
子系统:
class SubSystemOne {
void subFunctionOne() {
System.out.println("subFunctionOne");
}
}
class SubSystemTwo {
void subFunctionTwo() {
System.out.println("subFuctionTwo");
}
}
class SubSystemThree {
void subFunctionThree() {
System.out.println("subFunctionThree");
}
}
class SubSystemFour {
void subFunctionFour() {
System.out.println("subFuctionFour");
}
}
外观类:对功能类进行分组封装调用,屏蔽细节
public class FacadePattern {
private SubSystemOne subSystemOne;
private SubSystemTwo subSystemTwo;
private SubSystemThree subSystemThree;
private SubSystemFour subSystemFour;
public FacadePattern() {
subSystemOne = new SubSystemOne();
subSystemTwo = new SubSystemTwo();
subSystemThree = new SubSystemThree();
subSystemFour = new SubSystemFour();
}
public void FacadeMethodOne() {
subSystemOne.subFunctionOne();
subSystemTwo.subFunctionTwo();
subSystemThree.subFunctionThree();
}
public void FacadeMethodTwo() {
subSystemTwo.subFunctionTwo();
subSystemThree.subFunctionThree();
subSystemFour.subFunctionFour();
}
}
测试类:
public class Test {
public static void main(String[] args) {
FacadePattern facadePattern = new FacadePattern();
facadePattern.FacadeMethodOne();
System.out.println();
facadePattern.FacadeMethodTwo();
}
}
输出:
subFunctionOne
subFuctionTwo
subFunctionThree
subFuctionTwo
subFunctionThree
subFuctionFour
外观模式可以把某个复杂功能的具体子功能实现屏蔽起来,降低耦合性。