浏览 2181 次
锁定老帖子 主题:门面(Facade)模式【结构模式第四篇】
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (4)
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-23
最后修改:2010-10-20
是对象的结构模式。外部与一个子系统的通信必须通过一个统一的门面对象进行。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."); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |