首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

门脸(Facade)模式【结构模式第四篇】

2012-10-28 
门面(Facade)模式【结构模式第四篇】门面(Facade)模式:是对象的结构模式。外部与一个子系统的通信必须通过一

门面(Facade)模式【结构模式第四篇】
门面(Facade)模式:
是对象的结构模式。外部与一个子系统的通信必须通过一个统一的门面对象进行。549P

一、门面模式的角色:
1、门面角色:客户端可以调用这个角色的方法。此角色知晓相关的(一个或多个)子系统的功能和责任。
   在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。
  
2、子系统角色:可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。
   每一个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,
   门面仅仅是另外一个客户端而已。
  
二、一个使用门面模式的保安系统

//客户端public class Client{private static SecurityFacade security;private static void main(String args[]){security.activate();}}//门面类public class SecurityFacade{private Camera camera1 , camera2;private Light light1, light2, light3;private Sensor sensor;private Alarm alarm;public void activate(){camera1.turnOn();camera2.turnOn();light1.turnOn();light2.turnOn();light3.turnOn();sensor.activate();alarm.activate();}public void deactivate(){camera1.turnOff();camera2.turnOff();light1.turnOff();light2.turnOff();light3.turnOff();sensor.deactivate();alarm.deactivate();}}//录像机public class Camera{public void turnOn(){System.out.println("Turning on the camera.");}public void turnOff(){System.out.println(Turning off the camera.);}//转动录像机public void rotate(int degrees){System.out.println("rorating the camera by " + degrees + " degrees.");}}//灯public class Light{public void turnOn(){System.out.println("Turning on the light.");}public void turnOff(){System.out.println("Turning off the light.");}//换灯泡public void changeBulb(){System.out.println("changing the light-bulb.");}}//感应器public class Sensor{public void activate(){System.out.println("Acticating the sensor.");}public void deactivate(){System.out.println("Deactivating the sensor.");}//触发感应器public void trigger(){System.out.println("The sensor has been triggered.");}}public class Alarm{public void activate(){System.out.println("Activating the alarm.");}public void deactivate(){System.out.println("Deactivate the alarm.");}//拉响警报器public void ring(){System.out.println("Ring the alarm.");}//停掉警报器public void stopRing(){System.out.println("Stop the alarm.");}}

热点排行