Facade patten 读书笔记

提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

1。当需要使用一个现有的类而其接口并不符合你的需求时,就使用适配器。
2。当需要简化并统一一个个很大的接口或者一群复杂的接口时,就使用外观。
3。适配器改变接口以符合客户的期望。
4。外观将客户从一个复杂的子系统中解耦。
5。实现一个适配器可能需要一番功夫,也可能不费功夫,视目标接口的大小与复杂度而定。
6。实现一个外观,需要将子系统组合进外观众,然后将工作委托给子系统执行。
7。适配器模式有两种形式:对象适配器和类适配器。类适配器需要用到多重继承。
8。你可以为一个子系统实现一个以上的外观。
9。适配器将一个对象包装起来以改变其接口:装饰者将一个对象包装起来以增加新的行为和责任,而外观将一群对象包装起来以便简化其接口。
[img]http://blufiles.storage.live.com/y1pZ1u4rC44uCh1Twf08DGrZuZBTogx_m-bh_HIE0SjdbINNpc5qDvZ3QrE5aTxfd5h7KrcK4TbX-s[/img]
package pattern;
public class HomeTheaterFacade {
Amplifler amp = new Amplifler();
Tuner tuner = new Tuner();
DvdPlayer dvd = new DvdPlayer();
CdPlayer cdPlayer = new CdPlayer();
Projector projector = new Projector();
TheaterLights lights = new TheaterLights();
PopcomPopper popper = new PopcomPopper();
Screen screen = new Screen();
public HomeTheaterFacade(Amplifler amp, Tuner tuner, DvdPlayer dvd,
CdPlayer cdPlayer, Projector projector, TheaterLights lights,
PopcomPopper popper, Screen screen) {
amp = amp;
tuner = tuner;
dvd = dvd;
cdPlayer = cdPlayer;
projector = projector;
lights = lights;
popper = popper;
screen = screen;
}
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.setSurroundSoud();
amp.setVolume(5);
dvd.on();
dvd.play(movie);
}
public void EndMovie(String movie) {
System.out.println("Shutting movie theater down ....");
popper.off();
lights.on();
screen.up();
projector.off();
amp.off();
dvd.stop();
dvd.eject();
}
}
class Amplifler {
Tuner tuner;
DvdPlayer dvdPlayer;
CdPlayer cdPlayer;
public void on() {
System.out.println(" Amplifler on");
}
public void off() {
System.out.println(" Amplifler off");
}
public void setCd(CdPlayer cdPlayer) {
cdPlayer = cdPlayer;
}
public void setDvd(DvdPlayer dvdPlayer) {
dvdPlayer = dvdPlayer;
}
public void setSurroundSoud() {
System.out.println("Amplifler setSurroundSoud");
}
public void setTuner(Tuner tuner) {
tuner = tuner;
}
public void setVolume(int vol) {
System.out.println("Amplifler setVolume " + vol);
}
public String toString() {
return "Amplifler";
}
}
class Tuner {
public void on() {
System.out.println(" Tuner on");
}
public void off() {
System.out.println(" Tuner off");
}
public void setAm() {
System.out.println("Tuner setAm");
}
public void setFm() {
System.out.println("Tuner setFm");
}
public void setFrequency() {
System.out.println("Tuner setFrequency");
}
public String toString() {
return "Tuner";
}
}
class DvdPlayer {
public void on() {
System.out.println(" DvdPlayer on");
}
public void off() {
System.out.println(" DvdPlayer off");
}
public void eject() {
System.out.println(" DvdPlayer eject");
}
public void pause() {
System.out.println(" DvdPlayer pause");
}
public void play(String movie) {
System.out.println(" DvdPlayer play " + movie);
}
public void setSurroundAudio() {
System.out.println(" DvdPlayer setSurroundAudio");
}
public void setTwoChannelAudio() {
System.out.println(" DvdPlayer setTwoChannelAudio");
}
public void stop() {
System.out.println(" DvdPlayer stop");
}
}
class Screen {
public void up() {
System.out.println(" Screen up");
}
public void down() {
System.out.println(" Screen down");
}
public String toString() {
return "screen";
}
}
class CdPlayer {
public void on() {
System.out.println(" CdPlayer on");
}
public void off() {
System.out.println(" CdPlayer off");
}
public void eject() {
System.out.println(" CdPlayer eject");
}
public void pause() {
System.out.println(" CdPlayer pause");
}
public void play() {
System.out.println(" CdPlayer play");
}
public void stop() {
System.out.println(" CdPlayer stop");
}
public String toString() {
return "CdPlayer";
}
}
class Projector {
DvdPlayer dvdPlayer;
public void on() {
System.out.println(" Projector on");
}
public void off() {
System.out.println(" Projector off");
}
public void tvMode() {
System.out.println(" Projector tvMode");
}
public void wideScreenMode() {
System.out.println(" Projector wideScreenMode");
}
public String toString() {
return "Projector";
}
}
class PopcomPopper {
public void on() {
System.out.println(" PopcomPopper on");
}
public void off() {
System.out.println(" PopcomPopper off");
}
public void pop() {
System.out.println(" PopcomPopper pop");
}
public String toString() {
return "PopcomPopper";
}
}
class TheaterLights {
public void on() {
System.out.println(" TheaterLights on");
}
public void off() {
System.out.println(" TheaterLights off");
}
public void dim(int dim) {
System.out.println(" TheaterLights dim " + dim);
}
public String toString() {
return "TheaterLights";
}
}

package pattern;
public class HomeTheaterTestDrive {
/**
* @param args
*/
public static void main(String[] args) {
Amplifler amp = new Amplifler();
Tuner tuner = new Tuner();
DvdPlayer dvd = new DvdPlayer();
CdPlayer cdPlayer = new CdPlayer();
Projector projector = new Projector();
TheaterLights lights = new TheaterLights();
PopcomPopper popper = new PopcomPopper();
Screen screen = new Screen();
HomeTheaterFacade homeTheater = new HomeTheaterFacade(amp, tuner, dvd,
cdPlayer, projector, lights, popper, screen);
homeTheater.WatchMovie("TMD");
homeTheater.EndMovie("TMD");
}
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值