`
jiq408694711
  • 浏览: 36537 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

结构型-Facade模式

 
阅读更多
package facade;
/**
 * @author jiq
 * 类型:Structural
 * 定义:外观模式(Facade)提供一个统一的接口,用来访问子系统中的一群接口。外观
 * 		定义了一个高层接口,使得子系统更容易使用。
 * 
 * OO原则:最少知识原则 --- 只和你的密友交谈。
 *
 * 区别: 装饰器模式包装一个对象,并提供额外的行为。
 * 		  适配器模式包装一个对象,并转换成不同的接口(接口改变)。
 * 		  外观模式包装许多对象,以简化他们的接口(接口改变)。
 * 		  代理模式包装一个对象,并控制它的访问(不改变被代理对象的接口)。
 */
//屏幕
class Screen {
	String description;
	public Screen(String description) {
		this.description = description;
	} 
	public void up() { /*...*/ } 
	public void down() { /*...*/ }
}
//DVD播放器
class DvdPlayer {
	String description;
	int currentTrack;
	Projector projector;
	String title;
	public DvdPlayer(String description, Projector projector) {
		this.description = description;
		this.projector = projector;
	}
	public void on() { /*...*/ } 
	public void off() { /*...*/ }
	public void eject() { /*...*/ } 
	public void play(String title) { /*...*/ }
	public void stop() { /*...*/ } 
	public void pause() { /*...*/ }
}
//投影仪
class Projector {
	String description;
	DvdPlayer cd;	
	public Projector(String description) {
		this.description = description;
	}
	public void on() { /*...*/ } 
	public void off() { /*...*/ } 
	public void setStereoSound() { /*...*/ } 
	public void setSurroundSound() { /*...*/ } 
	public void setVolume(int level) { /*...*/ } 
	public void setCd(DvdPlayer cd) { /*...*/ }
}

//家庭影院(外观)
class HomeTheaterFacade {
	Projector projector;
	DvdPlayer cd;
	Screen screen;
 
	public HomeTheaterFacade(Projector amp,DvdPlayer cd,Screen screen) {
		this.projector = amp;
		this.cd = cd;
		this.screen = screen;
	}
	//开始看电影(将一群接口封装为一个简洁的接口)
	public void watchMovie(String movie) {
		System.out.println("Get ready to watch a movie...");
		screen.down();
		projector.on();
		projector.setSurroundSound();
		projector.setVolume(5);
	}
	//结束看电影(将一群接口封装为一个简洁的接口)
	public void endMovie() {
		System.out.println("Shutting movie theater down...");
		screen.up();
		projector.off();
	}
}

public class FacadeTest {
	public static void main(String[] args) {
		Projector projector = new Projector("Top-O-Line Amplifier");
		DvdPlayer cd = new DvdPlayer("Top-O-Line CD Player",projector);
		Screen screen = new Screen("Theater Screen");
		HomeTheaterFacade homeTheater = new HomeTheaterFacade(projector,cd,screen);
		homeTheater.watchMovie("Raiders of the Lost Ark");
		homeTheater.endMovie();
	}
}

分享到:
评论

相关推荐

    base-facade.zip

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

    C#面向对象设计模式纵横谈\11 结构型模式Facade外观模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第11节:结构型模式Facade外观模式

    08-Facade.rar

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

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

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

    外观模式(Facade Pattern)-结构型模式

    设计模式面面观(13):外观模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/17/2299641.aspx

    Facade 外观模式(结构型模式)

    C#面向对象设计模式纵横谈\C#面向对象设计模式纵横谈\10.Facade 外观模式(结构型模式).wmv )

    设计模式面面观(14):享元模式(Facade Pattern)-结构型模式

    设计模式面面观(14):享元模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/25/2326692.aspx

    C++ Facade模式

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

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

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

    c++-设计模式之外观模式(Facade Pattern)

    外观模式(Facade Pattern)是一种结构型设计模式,用于为复杂子系统提供一个简单的接口。它通过封装系统内部的复杂性,提供一个统一的接口,使得客户端能够更加方便地使用子系统的功能。这种模式通常用于简化代码、...

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

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

    C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) (Level 300)

    **外观模式(Facade Pattern)**是面向对象设计模式中的一种结构型模式,它提供了一个统一的接口,用于访问子系统中的各个部分。在C#编程中,外观模式可以帮助我们简化复杂的系统接口,使得客户端代码与复杂的内部...

    FACADE模式

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

    Facade模式

    **外观(Facade)模式**是软件工程中一种常用的设计模式,属于结构型模式。它提供了一个统一的接口,用于访问子系统中的一组接口。Facade模式使得子系统更易于使用,降低了客户端与复杂子系统之间的耦合度。在Java...

    原创-设计模式实现代码

    设计模式分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)和行为型模式(Behavioral Patterns)。这些模式都有其独特的应用场景和目标,下面将对每一类模式进行详细介绍。 1. ...

    design pattern in python

    - Facade(外观)模式是一种结构型设计模式,它为子系统中的一组接口提供了一个统一的更高级别的接口。 - 这种模式使得子系统更容易使用,通过隐藏子系统的复杂性,并向客户端提供一个简化的接口。 - Facade 模式...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    2. **结构型模式**:这类模式关注如何组合对象和类,以形成更大的结构。 - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 - 外观模式(Facade):提供一个统一的接口,用来访问子系统的一组...

    设计模式之结构型模式

    本资源是用VC6.0实现的结构型设计模式,主要有BridgePattern、AdapterPattern、DecoratorPattern、CompositePattern、FlyweightPattern、FacadePattern、ProxyPattern六种模式,参考于《23种设计模式(C++).pdf》

Global site tag (gtag.js) - Google Analytics