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();
}
}
客戶端代碼少了很多