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 閱讀(393) 評論(0)  編輯  收藏 所屬分類: Design Pattern

          主站蜘蛛池模板: 尼勒克县| 开鲁县| 琼结县| 正蓝旗| 洪洞县| 和硕县| 澳门| 兴国县| 福贡县| 绥滨县| 丘北县| 志丹县| 泽普县| 札达县| 彭阳县| 离岛区| 滨州市| 稻城县| 永寿县| 禄劝| 东城区| 柯坪县| 永靖县| 榆林市| 福安市| 新沂市| 温泉县| 隆安县| 文安县| 临漳县| 民和| 城步| 巩义市| 贡觉县| 浮山县| 广昌县| 临夏市| 特克斯县| 凉城县| 景德镇市| 六枝特区|