`
samsongbest
  • 浏览: 167808 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

10 结构模式 - 门面(Facade)模式

 
阅读更多

1.含义

外部与一个子系统的通信必须通过一个统一的门面对象进行,这就是门面模式。

 

2.类图

不使用门面模式的设计


 

使用门面模式的设计

3.代码

/*
 * 门面类
 */
public class SecurityFacade {
	private Camera camera1, camera2;
	private Light light1, light2, light3;
	private Sensor sensor;
	private Alarm alarm;

	public SecurityFacade() {
		camera1 = new Camera();
		camera2 = new Camera();
		light1 = new Light();
		light2 = new Light();
		light3 = new Light();
		sensor = new Sensor();
		alarm = new 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() {
		S.s("Turning on the camera.");
	}
	public void turnOff() {
		S.s("Turning off the camera.");
	}
	public void rotate(int degrees) {
		S.s("rotating the camera by " + degrees+"degrees.");
	}
}


/*
 * 电灯类
 */
public class Light {
	public void turnOn() {
		S.s("Turning on the light.");
	}
	public void turnOff() {
		S.s("Turning off the light.");
	}
	public void changeBulb() {
		S.s("Changing the light bulb.");
	}
}


/*
 * 传感器类
 */
public class Sensor {
	public void activate() {
		S.s("Activating the sensor.");
	}
	public void deactivate() {
		S.s("Deactivating the sensor.");
	}
	public void trigger() {
		S.s("The sensor has been triggered.");
	}
}


/*
 * 警报类
 */
public class Alarm {
	public void activate() {
		S.s("Activating the alarm.");
	}

	public void deactivate() {
		S.s("Deactivate the alarm.");
	}

	public void ring() {
		S.s("Ring the alarm.");
	}

	public void stopRing() {
		S.s("Stop the alarm.");
	}
}


/*
 * 测试类
 */
public class Test {
	
	public static void main(String[] args) {
		SecurityFacade sf = new SecurityFacade();
		sf.activate();
		sf.deactivate();
	}
}
 

z

  • 大小: 101.2 KB
  • 大小: 105.5 KB
分享到:
评论

相关推荐

    迪米特法则---门面Facade模式.docx

    门面(Facade)模式是一种设计模式,遵循迪米特法则,旨在简化子系统的使用,减少客户端与子系统之间的复杂依赖关系。迪米特法则主张一个对象应该尽量减少与其他对象的交互,只与直接的朋友交流,以此提高系统的内聚...

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

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

    c++设计模式-结构型模式-外观模式

    c++设计模式-结构型模式-外观模式;qt工程;c++简单源码; 外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,...

    结构型模式之门面模式(Facade)

    门面模式(Facade)是软件设计模式中的一种结构型模式,它的主要目的是为了解耦复杂的系统,通过提供一个简单的统一接口来屏蔽子系统的复杂性,使得客户端与子系统的交互变得更加简单和直观。在大型软件系统中,往往...

    设计模式C++学习之门面模式(Facade)

    门面模式(Facade)是设计模式中的一种结构型模式,它的主要目的是为了解决复杂的系统接口问题,提供一个简单的统一接口,使得客户端可以更方便地使用系统。在C++编程中,门面模式的应用尤为常见,它能有效地降低...

    7.设计模式-门面模式1

    门面(Facade)模式是一种设计模式,它在软件工程中被广泛使用,目的是为了提供一个更简单、更统一的接口来访问复杂的子系统。通过门面模式,客户端(调用者)无需直接与子系统中的多个组件交互,而是只需要与门面...

    设计模式之Facade

    eclipse工程文件 包含代码 有助理解 门面(Facade)模式 <br>... 二、 门面模式的结构 <br> 门面模式是对象的结构模式。门面模式没有一个一般化的类图描述,下图演示了一个门面模式的示意性对象图:

    08-Facade.rar

    门面(Facade)设计模式是一种结构型设计模式,它的主要目的是提供一个统一的接口,用来访问子系统中的多个接口,使子系统更加容易被使用。这个模式简化了客户端与复杂系统之间的交互,使得客户端无需了解子系统内部...

    设计模式 之 “门面模式[Facade Pattern]”

    门面模式(Facade Pattern)是软件工程中一种常用的结构型设计模式,它的主要目的是提供一个统一的接口,用来简化系统中一组复杂的接口或类的使用。这个模式将复杂的子系统接口封装在一个简单的门面对象中,使得...

    base-facade.zip

    在软件工程中,门面模式是一种结构型设计模式,它提供了一个统一的接口,用来简化一个复杂的系统或者子系统的使用。基类门面则是这个模式的一种变体,通常用于为一系列相关的类或者子系统提供一个通用的、简单的入口...

    C++设计模式课件14_Facade_门面模式.pdf

    ### C++设计模式之门面模式(Facade Pattern) #### 一、门面模式概述 在软件工程领域,设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易...

    facade门面模式

    门面模式(Facade Pattern)是一种结构型设计模式,它的主要目的是为复杂的子系统提供一个统一且简单的接口,使得客户端能够更方便地与这些子系统交互,而无需了解子系统的内部实现细节。这种模式降低了客户端与子...

    第8讲_门面模式(Facade)

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

    JAVA设计模式-设计模式公司出品

    5. 门面模式(FACADEPATTERN):门面模式提供了一个统一的接口,用来访问子系统中的一群接口。门面定义了一个高层接口,让子系统更容易使用。 6. 适配器模式(ADAPTERPATTERN):适配器模式将一个类的接口转换成...

    java模式-java中的所有模式-java进阶必备···

    当在层次化结构中,使用Facade模式定义子系统中每一层的入口点。 **12. 桥接模式(Bridge)** - **定义**:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 - **应用场景**:如果你不希望在抽象和它的...

    Facade模式

    Facade模式使得子系统更易于使用,降低了客户端与复杂子系统之间的耦合度。在Java编程中,我们可以利用此模式来简化复杂的系统接口,为用户提供一个简单的操作界面。 Facade模式的主要角色有: 1. **子系统...

    java实现的简单的应用facade模式范例

    Facade模式,也称为门面模式,是一种结构型设计模式,它提供了一个统一的接口,用于与复杂的子系统进行交互。这个模式简化了客户端与子系统之间的交互,使得客户端只需要知道一个简单的接口,而无需了解子系统的内部...

    门面模式门面模式

    门面模式(Facade Pattern)是一种结构型设计模式,它的主要目的是提供一个统一的接口,用来访问子系统中的一组接口。这个接口使得子系统更容易使用,同时也减少了客户端代码与子系统之间的耦合。门面模式通常用于...

    设计模式之门面模式

    门面模式(Facade Pattern)是软件工程中一种常用的设计模式,属于结构型模式。它提供了一个统一的接口,用来访问子系统中的一群接口。门面模式使得子系统的使用更为简单,同时也隐藏了子系统的复杂性,使得客户端...

Global site tag (gtag.js) - Google Analytics