外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行。
代码:
public class Test {
public static void main(String[] args) {
// old:
Light l = new Light();
Alarm a = new Alarm();
l.turnOn();
a.activate();
l.turnOff();
a.deactivate();
// new:
Facade f = new Facade(); // 不再和Light、Alarm等具体类打交道,只需要和门面类打交道即可
f.turnOn();
f.turnOff();
}
}
class Facade {
private Light t;
private Alarm a;
public void turnOn() {
t.turnOn();
a.activate();
}
public void turnOff() {
t.turnOff();
a.deactivate();
}
}
class Light {
public void turnOn(){}
public void turnOff(){}
}
class Alarm {
public void activate(){}
public void deactivate(){}
}