Facade模式意圖:提供一個(gè)子系統(tǒng)的外部與其內(nèi)部的通信。他提供了一個(gè)高層次的接口,使得子系統(tǒng)更容易使用。
舉例:
假設(shè)有一個(gè)保安系統(tǒng),由2個(gè)camera,3個(gè)light,1個(gè)sensor,1個(gè)alarm組成。保安系統(tǒng)的客戶端,即工作人員需要將這些儀器打開或者關(guān)閉。
如果不適用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();
}
}
客戶端代碼少了很多