`
Flyingh
  • 浏览: 18315 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Facade

 
阅读更多

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!
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    session facade:基于在线式银行的应用

    Session Facade是一种设计模式,常用于企业级Java应用程序,特别是在EJB(Enterprise JavaBeans)环境中,目的是解决上述问题,提高系统性能、可维护性和可扩展性。在基于在线式银行的应用中,Session Facade扮演着...

    设计模式之外观模式 facade

    外观模式(Facade Pattern)是设计模式中的一种结构型模式,主要目的是为了解决复杂的系统接口问题,提供一个简单的统一入口,使得客户端可以更方便地使用系统。在Java中,外观模式通常用来隐藏系统的复杂性,对外只...

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

    **Java实现的简单应用:Facade模式范例** Facade模式,也称为门面模式,是一种结构型设计模式,它提供了一个统一的接口,用于与复杂的子系统进行交互。这个模式简化了客户端与子系统之间的交互,使得客户端只需要...

    设计模式之Facade

    eclipse工程文件 包含代码 有助理解 门面(Facade)模式 <br>外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。 <br>医院的例子 <br>用一个例子进行说明,如果把医院...

    Laravel开发-symfonys-facade

    在Laravel框架中,"Symfony's Facade"指的是Laravel对Symfony组件的一种特殊包装,它提供了方便快捷的静态调用接口。Laravel的Facade设计模式是其强大功能的一部分,它使得开发者可以简单地调用服务容器中的服务,而...

    Ajax中使用Facade外观模式的Eclipse版本的Demo

    **Ajax与Facade模式** 在Web开发中,Ajax(Asynchronous JavaScript and XML)技术允许我们创建交互性更强、响应更快的网页。它通过在后台与服务器进行少量数据交换,实现了页面的部分更新,而无需刷新整个页面。...

    Command和Facade设计模式

    在软件设计模式的世界里,`Command`(命令)和`Facade`(外观)模式是非常重要的两种设计模式。它们分别服务于不同的目的,但都是为了提高代码的可读性、可维护性和灵活性。 `Command`模式是一种行为设计模式,它将...

    FACADE模式

    **外观(Facade)模式**是一种结构型设计模式,它的主要目的是提供一个统一的接口,用于客户端访问复杂的子系统。在大型软件系统中,通常由多个模块或子系统组成,每个子系统都有自己的功能,而客户端可能需要与这些...

    设计模式1,FACADE模式,Adapter

    本文将深入探讨FACADE模式、Adapter模式以及Singleton和Proxy模式的基本概念、应用场景和关键要素。 首先,FACADE(外观)模式是一种接口型模式,它的主要作用是为复杂的子系统提供一个简单的接口,使得客户端无需...

    设计模式之外观模式(Facade Pattern)

    **外观模式(Facade Pattern)**是一种结构型设计模式,它主要解决的是复杂系统或子系统对外暴露一个简单统一的接口,使得客户端无需关心内部复杂的交互细节。这种模式在实际开发中广泛应用,尤其在大型项目中,它能...

    simple log facade for java

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架提供了一个统一的接口,例如Log4j、Java Util Logging (JUL)、Logback等。这个设计使得开发者可以在不修改代码的情况下更换底层...

    Facade模式

    **Facade模式** Facade模式是一种设计模式,它提供了一个统一的接口,用来访问子系统中的一组接口。这个统一的接口使得客户端不必了解子系统组件的内部细节,简化了客户端与复杂系统之间的交互。在软件工程中,当一...

    facade设计模式

    ### Facade设计模式详解 #### 一、简介 在软件工程领域,设计模式是一种被广泛认可的解决特定问题的方法论。其中,`Facade设计模式`(外观模式)是一种结构型设计模式,它通过提供一个统一的接口来隐藏系统的复杂...

    C++ Facade模式

    **C++ Facade模式** Facade模式,又称为外观模式,是设计模式中的一种结构型模式。在软件工程中,它为子系统提供了一个统一的入口,简化了客户端对复杂子系统的访问,使得客户端无需了解子系统内部的具体实现细节。...

    设计模式之门面模式(Facade模式)

    设计模式之门面模式(Facade模式),介绍门面模式,实际例子分析,代码讲解等

    第8讲_门面模式(Facade)

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

    Wrapper facade pattern

    **包装器外观模式(Wrapper Facade Pattern)** 包装器外观模式是一种软件设计模式,它将一个复杂的组件或者一组组件的接口进行简化,提供一个统一的、更易用的访问方式。这种模式通常用于隐藏底层系统的复杂性,为...

    外观模式facade

    外观模式(Facade)是设计模式中的一种结构型模式,它为复杂的系统或子系统提供了一个统一的入口点,简化了客户端与系统之间的交互。通过外观模式,我们可以将系统的内部复杂性隐藏起来,使得用户只需要与一个简单的...

Global site tag (gtag.js) - Google Analytics