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();
}
}
分享到:
相关推荐
在软件工程中,门面模式是一种结构型设计模式,它提供了一个统一的接口,用来简化一个复杂的系统或者子系统的使用。基类门面则是这个模式的一种变体,通常用于为一系列相关的类或者子系统提供一个通用的、简单的入口...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第11节:结构型模式Facade外观模式
门面(Facade)设计模式是一种结构型设计模式,它的主要目的是提供一个统一的接口,用来访问子系统中的多个接口,使子系统更加容易被使用。这个模式简化了客户端与复杂系统之间的交互,使得客户端无需了解子系统内部...
c++设计模式-结构型模式-外观模式;qt工程;c++简单源码; 外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,...
设计模式面面观(13):外观模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/17/2299641.aspx
C#面向对象设计模式纵横谈\C#面向对象设计模式纵横谈\10.Facade 外观模式(结构型模式).wmv )
设计模式面面观(14):享元模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/25/2326692.aspx
Facade模式,又称为外观模式,是设计模式中的一种结构型模式。在软件工程中,它为子系统提供了一个统一的入口,简化了客户端对复杂子系统的访问,使得客户端无需了解子系统内部的具体实现细节。Facade模式通常应用于...
Facade模式,也称为门面模式,是一种结构型设计模式,它提供了一个统一的接口,用于与复杂的子系统进行交互。这个模式简化了客户端与子系统之间的交互,使得客户端只需要知道一个简单的接口,而无需了解子系统的内部...
外观模式(Facade Pattern)是一种结构型设计模式,用于为复杂子系统提供一个简单的接口。它通过封装系统内部的复杂性,提供一个统一的接口,使得客户端能够更加方便地使用子系统的功能。这种模式通常用于简化代码、...
门面模式(Facade)是软件设计模式中的一种结构型模式,它的主要目的是为了解耦复杂的系统,通过提供一个简单的统一接口来屏蔽子系统的复杂性,使得客户端与子系统的交互变得更加简单和直观。在大型软件系统中,往往...
**外观模式(Facade Pattern)**是面向对象设计模式中的一种结构型模式,它提供了一个统一的接口,用于访问子系统中的各个部分。在C#编程中,外观模式可以帮助我们简化复杂的系统接口,使得客户端代码与复杂的内部...
**外观(Facade)模式**是一种结构型设计模式,它的主要目的是提供一个统一的接口,用于客户端访问复杂的子系统。在大型软件系统中,通常由多个模块或子系统组成,每个子系统都有自己的功能,而客户端可能需要与这些...
**外观(Facade)模式**是软件工程中一种常用的设计模式,属于结构型模式。它提供了一个统一的接口,用于访问子系统中的一组接口。Facade模式使得子系统更易于使用,降低了客户端与复杂子系统之间的耦合度。在Java...
设计模式分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)和行为型模式(Behavioral Patterns)。这些模式都有其独特的应用场景和目标,下面将对每一类模式进行详细介绍。 1. ...
- Facade(外观)模式是一种结构型设计模式,它为子系统中的一组接口提供了一个统一的更高级别的接口。 - 这种模式使得子系统更容易使用,通过隐藏子系统的复杂性,并向客户端提供一个简化的接口。 - Facade 模式...
2. **结构型模式**:这类模式关注如何组合对象和类,以形成更大的结构。 - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 - 外观模式(Facade):提供一个统一的接口,用来访问子系统的一组...
本资源是用VC6.0实现的结构型设计模式,主要有BridgePattern、AdapterPattern、DecoratorPattern、CompositePattern、FlyweightPattern、FacadePattern、ProxyPattern六种模式,参考于《23种设计模式(C++).pdf》