`
java苹果+番茄
  • 浏览: 67975 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

门面(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.");
			}
		}
分享到:
评论

相关推荐

    第8讲_门面模式(Facade)

    门面模式(Facade Pattern)是一种设计模式,它在软件工程中扮演着简化复杂系统接口的角色。当一个系统或子系统包含大量类,并且客户端需要与这些类进行交互时,门面模式可以提供一个高层次的单一接口,使得客户端的...

    23种设计模式--门面模式

    门面模式(Facade Pattern)是软件工程中一种常用的设计模式,属于结构型模式。它为一个复杂的子系统提供了一个统一的接口,使得客户端可以更容易地使用这个子系统,而无需了解其内部的具体实现细节。在实际开发中,...

    Delphi模式编程第一分卷

    第4章 工厂方法模式(Factory Method) 4.1 模式解说 4.2 结构和用法 4.2.1 模式结构 4.2.2 代码模板 4.2.3 问题讨论 4.3 范例与实践 4.3.1 利用工厂方法模式设计可动态切换持久层机制的应用 4.3.2 范例小结...

    Delphi模式编程第二分卷

    第4章 工厂方法模式(Factory Method) 4.1 模式解说 4.2 结构和用法 4.2.1 模式结构 4.2.2 代码模板 4.2.3 问题讨论 4.3 范例与实践 4.3.1 利用工厂方法模式设计可动态切换持久层机制的应用 4.3.2 ...

    [浪曦原创]JAVA设计模式.第8讲.门面模式(jzkangta).rar

    4. 结构清晰:门面模式使得系统的结构更加清晰,有助于提高代码的可读性和可维护性。 5. 增强扩展性:随着系统的复杂度增加,可以方便地添加新的子系统或修改现有子系统,而不影响客户端。 在Java中,门面模式的...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    C#设计模式.PDF

    门面(Facade)模式 - **定义**:为子系统中的一组接口提供一个一致的界面。 - **结构**:包含子系统接口、子系统类和门面类。 - **优点**:降低了客户端与子系统的耦合度,简化了客户端代码。 - **缺点**:可能会...

    C#23种设计模式_示例源代码及PDF

    幸好相机有 Facade 设 计模式,把相 机调整到自动档,只要对准目标按快门就行了,一切由相机自动调整,这样 MM 也可以用 这个相机给我拍张照片了。 门面模式: 门面模式提供一个 门面模式 外部与一个子系统的通信...

    二十三种设计模式【PDF版】

    结构模式 设计模式之 Adapter(适配器) 使用类再生的两个方式:组合(new)和继承(extends),这个已经在 thinking in java中提到过. 设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 ...

    java设计模式(电子书)

    第4章多例模式(MULTITION PATTERN):与单例模式类似,但允许创建多个实例,通常在需要多个实例且这些实例之间需要共享某些状态时使用。 第5章工厂方法模式(FACTORY METHOD PATTERN):定义一个用于创建对象的...

    24种java设计模式介绍与6大设计原则

    #### 第4章 多例模式(Multiton Pattern) 多例模式类似于单例模式,但是允许多个实例存在,每个实例都有唯一的标识。 ##### 描述 多例模式允许根据不同的键值创建不同的实例,这在某些情况下比单例模式更灵活。 ...

    EJB设计模式 pdf

    例如,使用“门面模式”(Facade Pattern)可以简化复杂的系统接口,使其更容易被客户端使用;利用“代理模式”(Proxy Pattern)可以实现对远程EJB的透明访问;通过“工厂模式”(Factory Pattern)可以统一创建EJB...

    24种设计模式介绍与6大设计原则

    **门面模式(Facade Pattern)** - **定义**:为子系统中的一组接口提供一个一致的界面。 - **应用场景**:简化复杂的子系统的使用。 - **实例**:在大型软件系统中,可能有多个子系统需要交互,门面模式提供了...

    java设计模式学习笔记

    ### Java设计模式学习笔记——外观模式(Facade Pattern) #### 概述 设计模式是软件工程领域中一种解决常见问题的可复用解决方案。在Java开发过程中,掌握设计模式能够帮助开发者更好地组织代码结构,提高代码的...

    完整版 Java高级教程 Java语言程序设计 第6章 常用设计模式(共25页).ppt

    4. 门面模式(Facade Pattern): 门面模式为子系统提供了一个统一的接口,使得客户端可以不必了解子系统内部的复杂结构,简化了客户端与子系统的交互。它封装了一组接口,提供了更高级别的抽象,减少了客户端与子...

    java设计模式详细解说

    #### 第4章:多例模式【MULTI-TON PATTERN】 **定义与作用:** 多例模式是在单例模式的基础上进行扩展,允许多个实例存在,每个实例的状态是独立的,但所有实例共享相同的属性值。这种模式在某些情况下可以替代单例...

Global site tag (gtag.js) - Google Analytics