外观模式
2017-04-25 15:59
65 查看
外观模式提供了一个统一的接口,用来方位子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
提供简化接口的同时,依然将系统完整的功能暴露出来,以供需要的人使用
将客户从组件的子系统中解耦
外观模式需要区别于适配器模式(可参考我的另一篇文章),两者目的不同
外观模式:提供子系统的一个简化接口
适配器模式:伪装接口符合客户的期望
参考文章
1. Head First 设计模式
类图
java代码
// 屏幕 public class Screen { public void down() { System.out.println("screen down ..."); } public void up() { System.out.println("screen up ..."); } } // 音响 public class Stereo { public void on() { System.out.println("stereo on ..."); } public void off() { System.out.println("stereo off ..."); } public void setVolume(int volume) { System.out.println("stereo volume set " + volume); } } // dvd播放机 public class DVDPlayer { private String name; public void on() { System.out.println("dvd player on ..."); } public void off() { System.out.println("dvd player off ..."); } public void insertDVD(String name) { this.name = name; System.out.println("DVD " + name + " insert ..."); } public void takeDVD() { this.name = ""; System.out.println("DVD " + name + " take ..."); } } // 外观对象 public class EasyUse { private Screen screen; private Stereo stereo; private DVDPlayer dvdPlayer; public EasyUse(Screen screen, Stereo stereo, DVDPlayer dvdPlayer) { this.screen = screen; this.stereo = stereo; this.dvdPlayer = dvdPlayer; } public void on() { screen.down(); stereo.on(); stereo.setVolume(10); dvdPlayer.on(); dvdPlayer.insertDVD("XXX DVD"); } public void off() { dvdPlayer.takeDVD(); dvdPlayer.off(); stereo.setVolume(0); stereo.off(); screen.up(); } } // 测试对象 public class Test { public static void main(String[] args) { new Test().test(); } private void test() { // 创建电器对象 Screen screen = new Screen(); Stereo stereo = new Stereo(); DVDPlayer dvdPlayer = new DVDPlayer(); EasyUse easyUse = new EasyUse(screen, stereo, dvdPlayer); easyUse.on(); easyUse.off(); } }
注:
现在我们可以很方便的看一场电影,不需要再打开和设置各种电器提供简化接口的同时,依然将系统完整的功能暴露出来,以供需要的人使用
将客户从组件的子系统中解耦
外观模式需要区别于适配器模式(可参考我的另一篇文章),两者目的不同
外观模式:提供子系统的一个简化接口
适配器模式:伪装接口符合客户的期望
参考文章
1. Head First 设计模式
相关文章推荐
- 设计模式袖珍版 连续转载之 - Facade(外观)
- 包装外观(Wrapper Facade):用于在类中封装函数的结构型模式
- 设计模式之Facade(外观)
- C# 设计模式--外观模式(Facade)
- Java设计模式之外观模式研究
- 设计模式之Facade外观模式
- 设计模式学习笔记(十一)——Facade外观模式
- 设计模式学习笔记(十一)——Facade外观模式
- 设计模式(5)-外观模式(Facade)
- 设计模式(7)-外观模式(Facade)
- Dot Net设计模式—外观模式
- .NET设计模式(12):外观模式(Façade Pattern)
- Java有很多漂亮的外观模式和皮肤
- Dot Net设计模式—适配器、桥接与外观三模式之间的关系
- 会话外观模式与值对象
- 设计模式之Facade(外观 总管 Manager)
- 设计模式之外观(Facade)---对象结构型模式
- Facade外观(结构型模式)
- 外观模式(Facade Pattern)
- 《设计模式精解》学习笔记(四)——Facade(外观)模式