1.为什么要使用门面模式?
一个系统完成很多功能,我们把每一个功能都当成一个子系统。当客户端要完成一个功能时,需要与一个子系统打交道。但是这时客户端需要访问多个类的对象。这时难以维护,并且成本高。
2. 什么是门面模式(谈谈你对门面模式的理解)?
eg::病人去看病,需要完成挂号,划价,缴费,拿药。把这看成一个子系统。那么病人不直接访问这些对象,而是访问接待员,让接待员去完成这些事情。
3. 如何应用门面模式?
模拟一个保安系统使用门面模式的过程
public class Camera {
public void turnOn(){
System.out.println("turning on camera");
}
public void turnOff(){
System.out.println("turning off camera");
}
}
public class Light {
public void turnOn(){
System.out.println("turning on the light");
}
public void turnOff(){
System.out.println("turning off the light");
}
}
public class Sensor {
//开启感应器
public void turnOn(){
System.out.println("turning on sensor");
}
public void turnOff(){
System.out.println("turning off sensor");
}
public void trigger(){
System.out.println("the sensor has been triggered");
}
}
public class Alarm {
public void turnOn(){
System.out.println("turning on the alarm");
}
public void turnOff(){
System.out.println("turning off the alarm");
}
public void ring(){
System.out.println("Ring the alarm");
}
}
public class SecurityFacade {
private Light light1 = new Light();
private Light light2 = new Light();
private Light light3 = new Light();
private Camera camera1 = new Camera();
private Camera camera2 = new Camera();
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.turnOn();
}
public void deactivate(){
camera1.turnOn();
camera2.turnOn();
light1.turnOn();
light2.turnOn();
light3.turnOn();
sensor.turnOn();
alarm.turnOn();
}
}
public class Client {
private static SecurityFacade securityFacade = new SecurityFacade();
public static void main(String[] args) {
securityFacade.activate();
}
}
4. 在java中如何应用这个模式的?
session门面模式就是在javaee中的一个具体应用。