Java设计模式——外观模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/s3395719/article/details/78854430

设计目的: 把功能复杂的系统接口,封装成简单易用的接口

外观模式非常的简单,很容易理解。

直接引用 《Head First》里的类图

1.下面是一个复杂的家庭设备系统,有爆米花机、屏幕、投影仪、DVD等设备。

这里写图片描述

可能截图并不是很清晰,但是没关系,只需要知道这个系统很复杂就行。
从类图可以看出了,设备系统有很多的设备,而且每种设备又有很多方法。如果要从外部直接调用,就需要写很繁琐的代码。

2.下面的类图使用了一个简单的接口对系统进行封装

这里写图片描述

新增的接口方法集成了这个复杂系统的功能,用户只需面对这个简单的接口。这个接口类似于智能遥控,上面集成了家庭系统设备的各种开关。用户只需傻瓜式地调用“遥控器”就可以得到目的。

总结
简言之,外观模式就是创建一个简单接口,把用户和复杂的系统隔离开来。

装饰者模式、适配器模式、外观模式区别
最主要的区别是:“设计目的”
装饰者模式: 拓展旧接口的功能,“新” 替代(包装) “旧”。
适配器模式: 使旧接口能兼容(或使用)新接口功能,不改或少改原业务代码。“旧” (包装) “新”
外观模式: 简化内部系统的功能

可能我总结都不好,所以引用《Head First》上的原话:

1.当需求使用一个现有的类而其接口并不符合你的需要时,就使用适配器。

3.适配器改变接口以符合客户的期望。

4.外观将客户从一个复杂的子系统中解耦。

5.实现一个适配器可能需要一番功夫,也可能不费功夫,具体看目标接口的大小与复杂度而定。

6.实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统执行。

7.适配器模式有两种形式:对象适配器和类适配器。类适配器需要用到多重继承(Java不能多重继承,但可以取巧达到目的)。

8.适配器将一个对象包装起来以改变其接口;装饰者将一个对象包装起来以增加新的行为和责任;而外观将一群对象“包装”起来以简化其接口。

猜你喜欢

转载自blog.csdn.net/s3395719/article/details/78854430