您的位置:首页 > 其它

设计模式笔记(六)--适配器模式、外观模式

2015-08-25 16:16 267 查看
适配器模式(Adapter Pattern)

将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

简单点说,就是利用适配器将不符合自己期望的接口转成自己想要的接口。

对象适配器:



类适配器:



还是先看一下背景:对于客户电脑来说,有一个双孔插头,所以需要一个双孔插座来插上供电,也就是说,需要一个双孔接口(上图中的目标接口)。但是,离你最近的插座只有三孔的,那怎么办呢,把它换成两孔的?花钱到是不重要,重要的是有些电器还要用到三孔插座。所以有个“双孔-三孔适配器”是不是就好了?这个适配器的作用就是让三孔表现出双孔的功能,也就是将三孔(被适配者)适配给双孔(目标接口)。

适配器可以将变化的部分封装起来,这样即使变成四孔插座了也只需修改一下适配器就行了,这样就可以让客户从实现的接口解耦了(对于客户电脑来说,只关心双孔的插座,它只知道适配器有双孔插座,不会察觉到被适配者三孔插座的存在,客户和被适配者就解耦了)。

使用对象组合,以修改的接口包装被适配者(适配器持有被适配者的引用)

类适配器需要多重继承来实现,Java中肯定是不行的。使用多继承代替对象组合。

外观模式(Facade Pattern)

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

简单点说,就是用一个接口控制各个子系统的接口,从而让客户只用这个高层接口就可以达到目的,不用再逐个操作子系统了,从此简化了接口。

比如说,作为客户的我们想看体验智能家居的看电影功能,我们只需按下遥控器上面的“看电影”按钮即可,系统会自动进行打开投影仪、关闭灯光、打开音响等子系统的行为。

外观模式的根本目的就是简化接口,而适配器模式的根本目的是转换接口。

“最少知识”原则的指导方针:在该对象的方法内,只应该调用以下范围内的方法:

该对象本身
被当作方法的参数而传递进来的对象
该方法创建或实例化的任何对象
对象的任何组件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: