设计模式与代码的结构特性
Posted chengguorui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式与代码的结构特性相关的知识,希望对你有一定的参考价值。
什么是适配器模式
定义:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。
属于结构型模式
主要分为三类:类适配器模式、对象的适配器模式、接口的适配器模式。
本文定义:
需要被适配的类、接口、对象(我们有的),简称 src(source)
最终需要的输出(我们想要的),简称 dst (destination,即Target)
适配器称之为 Adapter 。
一句话描述适配器模式的感觉: src->Adapter->dst,即src以某种形式(三种形式分别对应三种适配器模式)给到Adapter里,最终转化成了dst。
使用场景:
1 系统需要使用现有的类,而这些类的接口不符合系统的需要。
2 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
3 需要一个统一的输出接口,而输入端的类型不可预知。
类适配器模式:
定义:Adapter类,通过继承 src类,实现 dst 类接口,完成src->dst的适配。
我们现有的src类:
dst接口:
适配器类:
Client类:
小结:
Java这种单继承的机制。
所以类适配器需要继承src类这一点算是一个缺点。
因为这要求dst必须是接口,有一定局限性;
且src类的方法在Adapter中都会暴露出来,也增加了使用的成本。
但同样由于其继承了src类,所以它可以根据需求重写src类的方法,使得Adapter的灵活性增强了。
适配器模式:
一句话描述:Adapter类,通过继承 src类,实现 dst 类接口,完成src->dst的适配。
对象适配器模式(常用):
小结:
对象适配器和类适配器其实算是同一种思想,只不过实现方式不同。
根据合成复用原则,组合大于继承,
所以它解决了类适配器必须继承src的局限性问题,也不再强求dst必须是接口。
同样的它使用成本更低,更灵活。
以上是关于设计模式与代码的结构特性的主要内容,如果未能解决你的问题,请参考以下文章