`
阅读更多

[关键字]:java,design pattern,设计模式,《Java与模式》学习,门面模式,外观模式,Facade Pattern
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com) http://www.blogjava.net/wintys/
[正文]:

无门面模式时:




 
 


有门面模式时:



 


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.

  • 大小: 43.9 KB
  • 大小: 29.8 KB
分享到:
评论

相关推荐

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

    - **代理模式(Proxy Pattern)**:代理模式为一个对象提供一个代用品,控制对原对象的访问,而门面模式则为整个子系统提供一个统一的接口。 在实际开发中,例如在框架或库的设计中,门面模式被广泛应用。例如,...

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

    门面模式(jzkangta).rar”这个压缩包中,包含了一套关于门面模式的讲解资源,包括一个可执行文件“[浪曦原创]JAVA设计模式 第8讲 门面模式(jzkangta).exe”,可能是一个演示或教学程序,以及一份“门面模式.ppt”的...

    第8讲_门面模式(Facade)

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

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

    原始模型模式: 原始模型模式 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原 型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类, 产品 类不需要非得有任何事先...

    ASP.NET 23种设计模式简单实例代码

    23. 门面模式:门面模式是一种结构型设计模式,它为子系统提供了一个统一的接口,使得这些子系统更容易被使用。 以上23种设计模式在ASP.NET环境中都有具体的实现代码,通过这些实例,开发者可以深入理解每种模式的...

    灸哥讲解结构型设计模式

    3.3 实现装饰器模式的关键是定义一个与原类相同接口的装饰类,它可以包含一个原类对象,并在其基础上添加新的行为。3.4 装饰器模式的不足在于如果过度使用,可能导致类的数量急剧增加,增加了理解和调试的难度。3.5 ...

    设计模式文档

    这部分涉及到适配器模式、桥梁模式、合成模式、装饰模式、门面模式、享元模式和代理模式等,它们的主要作用是处理类与类之间的组合关系。 #### 行为模式 这部分则关注于类的行为,如职责链模式、命令模式、解释器...

    Java中的23种设计模式.doc

    12. 代理模式:在对象前放置一个代理以控制对原对象的访问。代理可以用于控制访问权限、增加额外功能或提供远程访问等。 13. 责任链模式:对象间形成链式结构,请求沿链传递,由链上的某个对象决定处理请求。这种...

    java的23种经典设计模式

    13. **门面模式**:为子系统提供一个一致的界面,它封装了子系统的复杂性,并且提供了一个高层次的接口。 14. **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法...

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

    - **实例**:在大型软件系统中,可能有多个子系统需要交互,门面模式提供了一个简单的接口,隐藏了内部子系统的复杂性。 #### 8. **适配器模式(Adapter Pattern)** - **定义**:将一个类的接口转换成客户希望的...

    浅析java常用的设计模式.doc

    12. **代理模式**:代理模式是结构型模式,它在原有对象之外创建一个代理对象,代理对象控制对原对象的访问,可以实现对原对象的增强或监控。 13. **责任链模式**:责任链模式是行为型模式,它将多个处理者链接在...

    swift-使用OC实现常用的23种设计模式

    21. 门面模式(Facade):为子系统提供一个一致的界面,门面模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 22. 享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象,减少内存占用。 ...

    java设计模式学习笔记

    简单来说,外观模式的作用就像是一个门面,通过它我们可以更简便地与复杂的内部系统进行交互。 #### 应用场景 外观模式通常适用于以下几种情况: 1. **当不需要使用一个复杂系统的所有功能时**:可以通过创建一个...

    js 模式学习(英文)

    2. **结构型模式**:如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、门面模式、享元模式、外观模式。这些模式处理的是如何组合类或对象,形成更大的结构,关注如何简化接口、增强功能、或提供更灵活的...

    java中的23种设计模式

    - **定义**:代理模式是一种结构型设计模式,它给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 - **优点**: - 提供额外的操作。 - 控制对真实对象的访问。 - **缺点**: - 增加系统复杂度。 ...

    Java课堂:Java开发下的设计模式简单说明

    9. 门面模式(Facade):门面模式提供一个简单的统一接口,隐藏了复杂的子系统,使得客户端更容易使用。 10. 工厂方法模式(Factory Method):工厂方法模式定义一个用于创建对象的接口,由子类决定具体实例化哪个...

    Jive论坛原代码.rar

    除此之外,Jive论坛的源代码还可能涉及到其他设计模式,如组合模式用于构建层次结构,享元模式用于优化大量相似对象的创建,以及代理模式和门面模式来提供更简洁的接口和更好的性能。 通过对Jive论坛原代码的深入...

    c++设计模式.zip

    13. **门面模式**:为子系统提供一个统一的接口,使得这一子系统更加容易使用。 14. **命令模式**:将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的...

    java23种设计模式与追MM

    13. **门面模式**:类似于外观模式,简化了系统对外的交互,GG只需面对MM,不必了解她背后的亲友团。 14. **职责链模式**:GG的求爱计划可能涉及多个环节,职责链模式让请求沿着处理者链传递,直到找到合适的处理者...

Global site tag (gtag.js) - Google Analytics