门面模式

门面模式应用背景:为复杂的子系统提供一个简单的接口
门面模式包括两种角色:门面角色和子系统角色.
        门面角色:客户端可以调用的方法,此角色知晓一个或者多个子系统角色的功能和责任
        子系统角色:可以同时包括一个或者多个子系统角色,不是单独的一个类,而是类的集合
下面看一个例子:
        门卫通常需要抄作多种仪器,包括每种仪器的具体操作,这样子来说对于门卫来说工作量就增加了很多
出错的概率也变大了,一个合理的设计就是,为门卫设计一个统一控制的操作台,简化门卫的工作。
请看代码:
Client.java
/*
* 客户端通过安全门面来调用各个子系统
* 客户端角色
*/
public class Client {

    public static void main(String[] args){
        SecurityFacade sf = new SecurityFacade();
        sf.active();
        sf.inactive();
    }
}
下面几个类的角色是子系统角色
Camera.java
/*
* 子系统角色,是一个功能的集合,一般是很多类的一个集合
*/

public class Camera {

    public void run(){
        System.out.println("摄像机启动");
    }
    public void stop(){
        System.out.println("摄像机停止");
    }
}
Ring.java
public class Ring {
    public void run(){
        System.out.println("门铃启动");
    }
    public void stop(){
        System.out.println("门铃停止");
    }
}
Sensor.java
public class Sensor {
    public void run(){
        System.out.println("监视器启动");
    }
    public void stop(){
        System.out.println("监视器停止");
    }
}
SecurityFacade.java
/*
* 门面角色
*/
public class SecurityFacade {

    private Camera camera;
    private Ring ring;
    private Sensor sensor;
    public SecurityFacade(){
        camera = new Camera();
        ring = new Ring();
        sensor = new Sensor();
    }
    public void active(){
        camera.run();
        ring.run();
        sensor.run();
        
    }
    public void inactive(){
        camera.stop();
        ring.stop();
        sensor.stop();
    }
}

你可能感兴趣的:(java,设计模式,工作)