Skip to main content

外观模式

概述​

外观模式为子系统中的一组接口提供一个一致的界面,外观模式隐藏系统的复杂性,并提供了访问子系统的统一接口。

结构​

facade

外观(Facade)角色​

为多个子系统对外提供一个共同的接口。

子系统(Sub System)角色​

实现系统的部分功能,客户可以通过外观角色访问它。

实现​

/**
* 子系统
*/
public class SubSystemOne {
public void methodOne(){
System.out.println("子系统方法一");
}
}

/**
* 子系统
*/
public class SubSystemTwo {
public void methodTwo(){
System.out.println("子系统方法二");
}
}

/**
* 子系统
*/
public class SubSystemThree {
public void methodThree(){
System.out.println("子系统方法三");
}
}

/**
* 子系统
*/
public class SubSystemFour {
public void methodFour(){
System.out.println("子系统方法四");
}
}

/**
* 门面
*/
public class Facade {
private SubSystemOne subSystemOne;
private SubSystemTwo subSystemTwo;
private SubSystemThree subSystemThree;
private SubSystemFour subSystemFour;

public Facade(){
subSystemOne = new SubSystemOne();
subSystemTwo = new SubSystemTwo();
subSystemThree = new SubSystemThree();
subSystemFour = new SubSystemFour();
}

public void methodA(){
System.out.println("-----方法组A-----");
subSystemOne.methodOne();
subSystemFour.methodFour();
}

public void methodB(){
System.out.println("-----方法组B-----");
subSystemThree.methodThree();
}
}

public class FacadeTest {
@Test
public void test() {
Facade facade = new Facade();
facade.methodA();
facade.methodB();
}
}

结果​

-----方法组 A----- 子系统方法一 子系统方法四 -----方法组 B----- 子系统方法三