门面模式是对象的结构模式。外部与一个子系统的通信必须通过一个统一的门面对象进行,这就是门面模式。
门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。
在门面模式中,通常只需要一个门面类,并且此门面类只有一个实例,换言之它是一个单例类。当然这并不意味着在整个系统里只有有一个门面类,而仅仅是说对每一个子系统只有一个门面类。或者说,如果一个系统有好几个子系统的话,每一个子系统有一个门面类,整个系统可以有数个门面类。
2、java代码
System类:
package facade.system;
public class Alarm {
public void activate(){
System.out.println("Alarm activate。。。。。。");
}
public void deactivate(){
System.out.println("Alarm deactivate。。。。。。");
}
}
public void activate(){
System.out.println("Alarm activate。。。。。。");
}
public void deactivate(){
System.out.println("Alarm deactivate。。。。。。");
}
}
package facade.system;
public class Camera {
public void turnOn(){
System.out.println("Camera turnOn。。。。。。");
}
public void turnOff(){
System.out.println("Camera turnOff。。。。。。");
}
}
public void turnOn(){
System.out.println("Camera turnOn。。。。。。");
}
public void turnOff(){
System.out.println("Camera turnOff。。。。。。");
}
}
package facade.system;
public class Light {
public void turnOn(){
System.out.println("Light turnOn。。。。。。");
}
public void turnOff(){
System.out.println("Light turnOff。。。。。。");
}
public void turnOn(){
System.out.println("Light turnOn。。。。。。");
}
public void turnOff(){
System.out.println("Light turnOff。。。。。。");
}
}
package facade.system;
public class Sensor {
public void turnOn(){
System.out.println("Sensor turnOn。。。。。。");
}
public void turnOff(){
System.out.println("Sensor turnOff。。。。。。");
}
}
public void turnOn(){
System.out.println("Sensor turnOn。。。。。。");
}
public void turnOff(){
System.out.println("Sensor turnOff。。。。。。");
}
}
SecurityFacadeL类:
package facade;
import facade.system.Alarm;
import facade.system.Camera;
import facade.system.Light;
import facade.system.Sensor;
public class SecurityFacade {
private Camera camera1 = new Camera();
private Camera camera2 = new Camera();
private Light light1 = new Light();
private Light light2 = new Light();
private Light light3 = new Light();
private Sensor sensor = new Sensor();
private Alarm alarm = new Alarm();
public void activate(){
camera1.turnOn();
camera2.turnOn();
light1.turnOn();
light2.turnOn();
light3.turnOn();
sensor.turnOn();
alarm.activate();
}
public void deactivate(){
camera1.turnOff();
camera2.turnOff();
light1.turnOff();
light2.turnOff();
light3.turnOff();
sensor.turnOff();
alarm.deactivate();
}
}
import facade.system.Camera;
import facade.system.Light;
import facade.system.Sensor;
public class SecurityFacade {
private Camera camera1 = new Camera();
private Camera camera2 = new Camera();
private Light light1 = new Light();
private Light light2 = new Light();
private Light light3 = new Light();
private Sensor sensor = new Sensor();
private Alarm alarm = new Alarm();
public void activate(){
camera1.turnOn();
camera2.turnOn();
light1.turnOn();
light2.turnOn();
light3.turnOn();
sensor.turnOn();
alarm.activate();
}
public void deactivate(){
camera1.turnOff();
camera2.turnOff();
light1.turnOff();
light2.turnOff();
light3.turnOff();
sensor.turnOff();
alarm.deactivate();
}
}
Client类:
package facade;
public class Client {
private static SecurityFacade facade = new SecurityFacade();
public static void main(String args[]){
facade.activate();
facade.deactivate();
}
}
private static SecurityFacade facade = new SecurityFacade();
public static void main(String args[]){
facade.activate();
facade.deactivate();
}
}