Facade模式意图:提供一个子系统的外部与其内部的通信。他提供了一个高层次的接口,使得子系统更容易使用。
举例:
假设有一个保安系统,由2个camera,3个light,1个sensor,1个alarm组成。保安系统的客户端,即工作人员需要将这些仪器打开或者关闭。
如果不适用Facade模式,代码为:
public class Client
{
static private Camera camera1,camera2;
static private Light light1,light2,light3;
static private Sensor sensor;
static private Alarm alarm;
public static void main(String[] args)
{
camera1.turnOn();
camera2.turnOn();
light1.turnOn();
light2.turnOn();
light3.turnOn();
sensor.activate();
alarm.activate();
}
}
如果使用了Facade模式,代码为:
public class Facade
{
private Camera camera1,camera2;
private Light light1,light2,light3;
private Sensor sensor;
private Alarm alarm;
public void active()
{
camera1.turnOn();
camera2.turnOn();
light1.turnOn();
light2.turnOn();
light3.turnOn();
sensor.activate();
alarm.activate();
}
}
public class Client
{
private static Facade facade;
public static void main(String[] args)
{
facade.active();
}
}
客户端代码少了很多