随笔 - 117  文章 - 72  trackbacks - 0

声明:原创作品(标有[原]字样)转载时请注明出处,谢谢。

常用链接

常用设置
常用软件
常用命令
 

订阅

订阅

留言簿(7)

随笔分类(130)

随笔档案(123)

搜索

  •  

积分与排名

  • 积分 - 153011
  • 排名 - 390

最新评论

[关键字]:java,design pattern,设计模式,《Java与模式》学习,门面模式,外观模式,Facade Pattern
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys/
[正文]:

无门面模式时:

有门面模式时:


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-15 17:15 天堂露珠 阅读(1163) 评论(2)  编辑  收藏 所属分类: Pattern

FeedBack:
# re: [原]门面模式 2009-06-17 12:31 心梦帆影
支持一下!
想请教你一个问题:
这些Java代码是自己写的还是由StartUML根据UML图生成的?  回复  更多评论
  
# re: [原]门面模式 2009-06-17 17:59 天堂露珠
@心梦帆影
可以生成部分代码,但是我没有使用自动生成。  回复  更多评论
  

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


网站导航: