- 浏览: 18315 次
- 性别:
- 来自: 西安
最新评论
Facade Pattern:为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
Tv.java
package com.flyingh.bean; public class Tv { public void turnOn() { System.out.println("turn on the TV!"); } public void chooseChannel() { System.out.println("choose the TV channel!"); } public void changeToVideo() { System.out.println("turn to video!"); } public void setTvBrightness() { System.out.println("set the TV's brightness!"); } public void setTvVolume() { System.out.println("set the TV's volume!"); } public void turnOff() { System.out.println("turn off the TV!"); } }
Dvd.java
package com.flyingh.bean; public class Dvd { public void turnOn() { System.out.println("turn on the DVD!"); } public void pop() { System.out.println("pop it to put disk in or get disk out!"); } public void putDiskIn() { System.out.println("put the dvd disk in!"); } public void push() { System.out .println("push it after putting the disk in or getting the disk out!"); } public void setDvdVolume() { System.out.println("set the dvd volume!"); } public void getDiskOut() { System.out.println("get the dvd disk out!"); } public void turnOff() { System.out.println("turn off the DVD!"); } }
Radio.java
package com.flyingh.bean; public class Radio { public void turnOn() { System.out.println("turn on the radio!"); } public void chooseChannel() { System.out.println("choose the radio channel,turn to am or fm!"); } public void rotate() { System.out.println("rotate the line!"); } public void setVolume() { System.out.println("set the radio volume!"); } public void turnOff() { System.out.println("turn off the radio!"); } }
Facade.java
package com.flyingh.facade; import com.flyingh.bean.Dvd; import com.flyingh.bean.Radio; import com.flyingh.bean.Tv; public class Facade { private Tv tv; private Dvd dvd; private Radio radio; public Facade(Tv tv, Dvd dvd, Radio radio) { super(); this.tv = tv; this.dvd = dvd; this.radio = radio; } public void endWatchDvdAndTv() { closeDvd(); closeTv(); } public void watchTv() { tv.turnOn(); tv.chooseChannel(); tv.setTvVolume(); tv.setTvBrightness(); System.out.println("start to watch TV!"); } public void closeTv() { tv.turnOff(); } public void watchDvd() { tv.turnOn(); tv.changeToVideo(); dvd.turnOn(); dvd.pop(); dvd.putDiskIn(); dvd.push(); dvd.setDvdVolume(); tv.setTvVolume(); tv.setTvBrightness(); System.out.println("start to watch DVD!"); } public void closeDvd() { dvd.pop(); dvd.getDiskOut(); dvd.push(); dvd.turnOff(); } public void listenRadio() { radio.turnOn(); radio.chooseChannel(); radio.rotate(); radio.setVolume(); System.out.println("start to listen to radio!"); } public void closeRadio() { radio.turnOff(); } }
Client.java
package com.flyingh.client; import com.flyingh.bean.Dvd; import com.flyingh.bean.Radio; import com.flyingh.bean.Tv; import com.flyingh.facade.Facade; public class Client { public static void main(String[] args) { Tv tv = new Tv(); Dvd dvd = new Dvd(); Radio radio = new Radio(); Facade facade = new Facade(tv, dvd, radio); facade.watchTv(); System.out.println("***************"); facade.closeTv(); System.out.println("***************"); facade.watchDvd(); System.out.println("***************"); facade.closeDvd(); System.out.println("***************"); facade.listenRadio(); System.out.println("***************"); facade.closeRadio(); System.out.println("***************"); facade.watchDvd(); System.out.println("***************"); facade.endWatchDvdAndTv(); } }
程序运行结果如下:
turn on the TV! choose the TV channel! set the TV's volume! set the TV's brightness! start to watch TV! *************** turn off the TV! *************** turn on the TV! turn to video! turn on the DVD! pop it to put disk in or get disk out! put the dvd disk in! push it after putting the disk in or getting the disk out! set the dvd volume! set the TV's volume! set the TV's brightness! start to watch DVD! *************** pop it to put disk in or get disk out! get the dvd disk out! push it after putting the disk in or getting the disk out! turn off the DVD! *************** turn on the radio! choose the radio channel,turn to am or fm! rotate the line! set the radio volume! start to listen to radio! *************** turn off the radio! *************** turn on the TV! turn to video! turn on the DVD! pop it to put disk in or get disk out! put the dvd disk in! push it after putting the disk in or getting the disk out! set the dvd volume! set the TV's volume! set the TV's brightness! start to watch DVD! *************** pop it to put disk in or get disk out! get the dvd disk out! push it after putting the disk in or getting the disk out! turn off the DVD! turn off the TV!
发表评论
文章已被作者锁定,不允许评论。
-
Interpreter
2011-11-24 21:19 839Interpreter Pattern:其意图是给定一个语言, ... -
Visitor
2011-11-24 17:37 659Visitor Pattern:表示一个作用于某对象结构中的各 ... -
Mediator
2011-11-24 16:22 663Mediator Pattern: 用一 ... -
Prototype
2011-11-24 11:32 605Prototype Pattern:就是通过复制现在已经存在的 ... -
Memento
2011-11-23 21:56 685Memento Pattern:在不破坏封闭的前提下,捕获一个 ... -
Flyweight
2011-11-23 18:38 651享元模式以共享的方式高效地支持大量的细粒度对象. 1).Fl ... -
Builder
2011-11-22 16:38 763Builder Pattern:可以将一个产品的内部表象与产品 ... -
Bridge
2011-11-22 15:05 684桥梁模式的用意是"将抽象化(Abstraction) ... -
Chain Of Responsibility
2011-11-21 23:05 658Chain Of Responsibility Pattern ... -
Abstract Factory
2011-11-21 22:00 644下面以Mac和PC的CPU和RAM为例,代码如下: Cpu. ... -
Proxy
2011-11-18 18:47 661Proxy Pattern:对其他对象提供一种代理以控制对这个 ... -
State
2011-11-18 15:57 678State Pattern:当一个对象的内在状态改变时允许改变 ... -
Composite
2011-11-17 17:09 793Composite Pattern:意图是将对象组合成树形结构 ... -
Iterator
2011-11-16 16:56 891Iterator Pattern:其意图是提供一种方法顺序访问 ... -
Template Method
2011-11-16 11:43 660模板方法模式:在一个方法中定义一个算法的骨架,而将一些实 ... -
Adapter
2011-11-15 21:43 632Adapter Pattern:将一个类的接口,转换成客户所期 ... -
Command
2011-11-14 23:06 5731).下面以Boss和Clerk为例: Clerk.java ... -
Factory Method
2011-11-13 20:44 595Simple Factory: 以Fruit为例,以下是实现 ... -
Decorator
2011-11-12 23:09 571装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的 ... -
Observer
2011-11-12 21:30 601观 察 者 模 式 定义了对象之间的一对多依赖,这样一来 ...
相关推荐
Session Facade是一种设计模式,常用于企业级Java应用程序,特别是在EJB(Enterprise JavaBeans)环境中,目的是解决上述问题,提高系统性能、可维护性和可扩展性。在基于在线式银行的应用中,Session Facade扮演着...
外观模式(Facade Pattern)是设计模式中的一种结构型模式,主要目的是为了解决复杂的系统接口问题,提供一个简单的统一入口,使得客户端可以更方便地使用系统。在Java中,外观模式通常用来隐藏系统的复杂性,对外只...
**Java实现的简单应用:Facade模式范例** Facade模式,也称为门面模式,是一种结构型设计模式,它提供了一个统一的接口,用于与复杂的子系统进行交互。这个模式简化了客户端与子系统之间的交互,使得客户端只需要...
eclipse工程文件 包含代码 有助理解 门面(Facade)模式 <br>外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。 <br>医院的例子 <br>用一个例子进行说明,如果把医院...
在Laravel框架中,"Symfony's Facade"指的是Laravel对Symfony组件的一种特殊包装,它提供了方便快捷的静态调用接口。Laravel的Facade设计模式是其强大功能的一部分,它使得开发者可以简单地调用服务容器中的服务,而...
**Ajax与Facade模式** 在Web开发中,Ajax(Asynchronous JavaScript and XML)技术允许我们创建交互性更强、响应更快的网页。它通过在后台与服务器进行少量数据交换,实现了页面的部分更新,而无需刷新整个页面。...
在软件设计模式的世界里,`Command`(命令)和`Facade`(外观)模式是非常重要的两种设计模式。它们分别服务于不同的目的,但都是为了提高代码的可读性、可维护性和灵活性。 `Command`模式是一种行为设计模式,它将...
**外观(Facade)模式**是一种结构型设计模式,它的主要目的是提供一个统一的接口,用于客户端访问复杂的子系统。在大型软件系统中,通常由多个模块或子系统组成,每个子系统都有自己的功能,而客户端可能需要与这些...
本文将深入探讨FACADE模式、Adapter模式以及Singleton和Proxy模式的基本概念、应用场景和关键要素。 首先,FACADE(外观)模式是一种接口型模式,它的主要作用是为复杂的子系统提供一个简单的接口,使得客户端无需...
**外观模式(Facade Pattern)**是一种结构型设计模式,它主要解决的是复杂系统或子系统对外暴露一个简单统一的接口,使得客户端无需关心内部复杂的交互细节。这种模式在实际开发中广泛应用,尤其在大型项目中,它能...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架提供了一个统一的接口,例如Log4j、Java Util Logging (JUL)、Logback等。这个设计使得开发者可以在不修改代码的情况下更换底层...
**Facade模式** Facade模式是一种设计模式,它提供了一个统一的接口,用来访问子系统中的一组接口。这个统一的接口使得客户端不必了解子系统组件的内部细节,简化了客户端与复杂系统之间的交互。在软件工程中,当一...
### Facade设计模式详解 #### 一、简介 在软件工程领域,设计模式是一种被广泛认可的解决特定问题的方法论。其中,`Facade设计模式`(外观模式)是一种结构型设计模式,它通过提供一个统一的接口来隐藏系统的复杂...
**C++ Facade模式** Facade模式,又称为外观模式,是设计模式中的一种结构型模式。在软件工程中,它为子系统提供了一个统一的入口,简化了客户端对复杂子系统的访问,使得客户端无需了解子系统内部的具体实现细节。...
设计模式之门面模式(Facade模式),介绍门面模式,实际例子分析,代码讲解等
门面模式(Facade Pattern)是一种设计模式,它在软件工程中扮演着简化复杂系统接口的角色。当一个系统或子系统包含大量类,并且客户端需要与这些类进行交互时,门面模式可以提供一个高层次的单一接口,使得客户端的...
**包装器外观模式(Wrapper Facade Pattern)** 包装器外观模式是一种软件设计模式,它将一个复杂的组件或者一组组件的接口进行简化,提供一个统一的、更易用的访问方式。这种模式通常用于隐藏底层系统的复杂性,为...
外观模式(Facade)是设计模式中的一种结构型模式,它为复杂的系统或子系统提供了一个统一的入口点,简化了客户端与系统之间的交互。通过外观模式,我们可以将系统的内部复杂性隐藏起来,使得用户只需要与一个简单的...