paulwong

门面模式 - Facade Pattern

无门面模式时:
有门面模式时:

package pattern.facade;
/**
 * 门面模式/外观模式:Facade Pattern
 *
 * 保安系统:
 * 一个保安系统由两个录像机、一个感应器和一个报警器组成。
 * 由保安操作仪器的启动和关闭:没有使用门面模式时,保安必须亲自启动每个仪器。
 * 
@version 2009-6-15
 * 
@author Winty(wintys@gmail.com)
 
*/
public class FacadeTest{
    
public static void main(String[] args){
        
//无门面模式
        Camera camera1,camera2;
        camera1 
= new Camera();
        camera2 
= new Camera();
        
        Sensor sensor;
        sensor 
= new Sensor();

        Alarm alarm;
        alarm 
= new Alarm();

        
//启动仪器
        camera1.turnOn();
        camera2.turnOn();
        sensor.activate();
        alarm.activate();
        System.out.println(
"");

        
/////////////////////////////////
        
//使用门面模式
        SecurityFacade security = new SecurityFacade();
        security.start();
    }
}

/**
 * 门面:Facade
 
*/
class SecurityFacade{
    
private Camera camera1;
    
private Camera camera2;
    
private Sensor sensor;
    
private Alarm alarm;

    
public SecurityFacade(){
        camera1 
= new Camera();
        camera2 
= new Camera();
        sensor 
= new Sensor();
        alarm 
= new Alarm();
    }
    
//启动
    public void start(){
        camera1.turnOn();
        camera2.turnOn();
        sensor.activate();
        alarm.activate();
    }

    
//停止
    public void stop(){
        camera1.turnOff();
        camera2.turnOff();
        sensor.deactivate();
        alarm.deactivate();
    }
}

class Camera{
    
public void turnOn(){
        System.out.println(
"turn on the Camera.");
    }

    
public void turnOff(){
        System.out.println(
"turn off the Camera.");
    }

    
//转动
    public void rotate(){
        System.out.println(
"rotate the Camera.");
    }
}


class Sensor{
    
public void activate(){
        System.out.println(
"activate the sensor.");
    }

    
public void deactivate(){
        System.out.println(
"deactivate the sensor.");
    }

    
//触发感应器
    public void trigger(){
        System.out.println(
"trigger the sensor.");
    }
}

class Alarm{
    
public void activate(){
        System.out.println(
"activate the alarm.");
    }

    
public void deactivate(){
        System.out.println(
"deactivate the alarm.");
    }

    
//拉响报警器
    public void ring(){
        System.out.println(
"ring the alarm.");
    }


运行结果:
turn on the Camera.
turn on the Camera.
activate the sensor.
activate the alarm.

turn on the Camera.
turn on the Camera.
activate the sensor.
activate the alarm.

posted on 2009-06-17 00:00 paulwong 阅读(388) 评论(0)  编辑  收藏 所属分类: Design Pattern


只有注册用户登录后才能发表评论。


网站导航: