* 外观模式定义:
* 它提供一个统一的接口,用来访问子系统中的一群接口.
* 外观定义了一个高层接口,让子系统更容易使用.
*
* OO原则:"最少知识(Least Knowledge)"原则
* 即我们要减少对象之间的交互,只留下几个"密友".
* 只和你的密友谈话.
*
* 如何不要赢得太多的朋友和影响太多的对象?
* 此原则提供的方针:
* 就任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法:
* 1.该对象本身
* 2.被当做方法的参数而传递进来的对象
* 3.此方法所创建或实例化的任何对象
* 4.对象的任何组件(类的字段所引用的对象)
*
* 最少知识原则的优点:减少对象之间依赖,减少软件维护成本.
* 缺点:会导致更多的"包装"类被制造出来,以处理和其他组件的沟通,
* 这可能会导致复杂度和开发时间的增加,并降低运行时的性能.package desginpattern.facade;
/**
* 外观模式核心类!
* 外观模式定义:
* 它提供一个统一的接口,用来访问子系统中的一群接口.
* 外观定义了一个高层接口,让子系统更容易使用.
*
* OO原则:"最少知识(Least Knowledge)"原则
* 即我们要减少对象之间的交互,只留下几个"密友".
* 只和你的密友谈话.
*
* 如何不要赢得太多的朋友和影响太多的对象?
* 此原则提供的方针:
* 就任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法:
* 1.该对象本身
* 2.被当做方法的参数而传递进来的对象
* 3.此方法所创建或实例化的任何对象
* 4.对象的任何组件(类的字段所引用的对象)
*
* 最少知识原则的优点:减少对象之间依赖,减少软件维护成本.
* 缺点:会导致更多的"包装"类被制造出来,以处理和其他组件的沟通,
* 这可能会导致复杂度和开发时间的增加,并降低运行时的性能.
*/
public class HomeTheaterFacade {
Amplifier amp;
Tuner tuner;
DvdPlayer dvd;
CdPlayer cd;
Projector projector;
TheaterLights lights;
Screen screen;
PopcornPopper popper;
public HomeTheaterFacade(Amplifier amp,
Tuner tuner,
DvdPlayer dvd,
CdPlayer cd,
Projector projector,
Screen screen,
TheaterLights lights,
PopcornPopper popper) {
this.amp = amp;
this.tuner = tuner;
this.dvd = dvd;
this.cd = cd;
this.projector = projector;
this.screen = screen;
this.lights = lights;
this.popper = popper;
}
public void watchMovie(String movie) {
System.out.println("Get ready to watch a movie...");
popper.on();
popper.pop();
lights.dim(10);
screen.down();
projector.on();
projector.wideScreenMode();
amp.on();
amp.setDvd(dvd);
amp.setSurroundSound();
amp.setVolume(5);
dvd.on();
dvd.play(movie);
}
public void endMovie() {
System.out.println("Shutting movie theater down...");
popper.off();
lights.on();
screen.up();
projector.off();
amp.off();
dvd.stop();
dvd.eject();
dvd.off();
}
public void listenToCd(String cdTitle) {
System.out.println("Get ready for an audiopile experence...");
lights.on();
amp.on();
amp.setVolume(5);
amp.setCd(cd);
amp.setStereoSound();
cd.on();
cd.play(cdTitle);
}
public void endCd() {
System.out.println("Shutting down CD...");
amp.off();
amp.setCd(cd);
cd.eject();
cd.off();
}
public void listenToRadio(double frequency) {
System.out.println("Tuning in the airwaves...");
tuner.on();
tuner.setFrequency(frequency);
amp.on();
amp.setVolume(5);
amp.setTuner(tuner);
}
public void endRadio() {
System.out.println("Shutting down the tuner...");
tuner.off();
amp.off();
}
}
分享到:
相关推荐
**外观模式(Facade Pattern)**是一种结构型设计模式,它为复杂的系统或子系统提供一个简单的接口,使得客户端可以不关心内部的复杂性,只通过这个接口与子系统进行交互。这种模式降低了系统的复杂度,提高了代码的...
外观模式(Facade Pattern)是设计模式中的一种结构型模式,它的主要目的是为了解耦系统,提供一个统一的入口,使得客户端可以更容易地使用复杂的子系统。在Java中,外观模式通常用于简化对复杂系统的访问,它创建了...
用外观模式实现下面这个抵押系统。 考虑这样一个抵押系统,当有一个客户来时,有如下几件事情需要确认: 1到银行子系统查询他是否有足够多的存款, 2到信用子系统查询他是否有良好的信用, 3到贷款子系统查询他有无...
**外观模式(Facade)**是一种结构型设计模式,它的主要目的是为了解耦复杂的系统,提供一个简单的接口,使得客户端可以更方便地使用系统的子系统。在C++编程中,外观模式的应用尤为常见,因为它能够有效地降低系统...
**外观模式(Facade Pattern)**是一种结构型设计模式,它为复杂的系统或子系统提供一个简单的接口,使得客户端可以通过这个接口来访问系统,而无需了解系统内部的具体实现细节。外观模式降低了系统的复杂度,提高了...
设计模式外观模式PPT学习教案 在软件设计中,外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口来访问子系统中的多个接口,从而简化了子系统的使用和维护。本节课程将详细介绍外观模式的...
**外观模式(Facade Pattern)**是软件设计模式中的一种结构型模式,它的主要目的是为了解耦复杂的系统,提供一个统一的接口,使得客户端可以更容易地使用这个系统。在Java编程中,外观模式的应用广泛,尤其是在处理...
下面我们将详细探讨Android外观模式的概念、结构以及如何通过提供的"Android外观模式demo"进行实践。 外观模式的核心思想是提供一个统一的入口,隐藏系统的复杂性。在Android环境中,这通常意味着创建一个类,该类...
### 外观模式详解 #### 一、外观模式概述 **外观模式**(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。简单...
**外观模式(Facade Pattern)**是软件工程中一种常用的设计模式,它为复杂的子系统提供了一个简单的接口,使得客户端代码可以更容易地与这些子系统交互。在C#中,外观模式同样被广泛应用,以降低系统的复杂性,提高...
适配器模式和外观模式是两种非常重要的设计模式,它们在实际项目中有着广泛的应用。本资源提供了一个关于这两种模式的实战示例,帮助我们更好地理解和应用它们。 适配器模式(Adapter Pattern)的主要目的是将两个...
**外观模式(Facade Pattern)**是一种结构型设计模式,它主要解决的是复杂系统或子系统对外暴露一个简单统一的接口,使得客户端无需关心内部复杂的交互细节。这种模式在实际开发中广泛应用,尤其在大型项目中,它能...
### 实验7 适配器模式、外观模式与模板方法模式 #### 一、适配器模式 **适配器模式(Adapter Pattern)** 是一种结构型设计模式,它允许不兼容的接口之间能够协同工作。适配器模式的主要作用是通过创建一个新的...
**外观模式(Facade Pattern)**是软件设计模式中的一种结构型模式,它的主要目的是为了解耦复杂的系统,提供一个统一的接口,使得客户端可以更容易地使用这个系统。在这个模式中,外观类作为客户端与子系统之间的...
**外观模式(Facade Pattern)**是一种结构型设计模式,它为复杂的系统或子系统提供一个统一的入口点,简化了客户端与其交互的方式。在Java中,外观模式的应用可以帮助我们更好地组织代码,降低系统的耦合度,并提高...
装饰模式和外观模式是软件设计模式中的两种重要结构模式,它们在实际开发中有着广泛的应用。下面我们将分别探讨这两种模式的原理、应用场景以及实例代码。 首先,装饰模式(Decorator Pattern)是一种行为设计模式...
外观模式(Facade Pattern)是一种设计模式,它提供了一个统一的接口,用来访问子系统中的一组接口。这种模式使得客户端可以更容易地使用一个复杂的子系统,而无需了解其内部细节。在C#中,我们可以利用面向对象编程...
某系统需要提供一个文件加密模块,加密流程包括三...现在需要提供一个统一的加密外观类,用户可以直接使用该加密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个类进行交互,使用外观模式设计该加密模块。
考虑这样一个抵押系统,当有一个客户来时,有如下几件事情需要确认:到银行子系统查询他是否有足够多的存款,到信用子系统查询他是否有良好的信用,到贷款子系统查询他有无贷款... 未采用外观模式的类结构图见附件。
外观模式是面向对象设计模式的一种,它的主要目标是提供一个统一的接口,用于与复杂的子系统进行交互,简化客户端代码,使得客户类无需了解子系统内部的复杂性。 首先,让我们深入理解外观模式的核心概念。外观模式...