“类”适配器
“类”适配器需要多重继承才能够实现它,这在Java中是不可能的。但是当你在使用多重继承语言的时候,还是可能遇到这样的需求。
“对象”适配器 VS “类”适配器
“对象”适配器和“类”适配器使用两种不同的适配方式(分别是组合与继承)。“类”适配器继承了Target和Adaptee;而“对象”适配器利用组合的方式将请求传送给被适配者。
“类”适配器:
a) 用一个具体的Adapter类对Adaptee和Target进行匹配。结果是当我们想要匹配一个类以及所有它的子类时,“类”适配器将不能胜任工作。
b) 是的Adapter可以重定义Adaptee的部分行为,因为Adapter是Adaptee的一个子类。
c) 仅仅引入了一个对象,并不需要额外的指针以间接得到adaptee。
“对象”适配器:
a) 允许一个Adapter与多个Adaptee ———— 即Adaptee本身以及它的所有子类(如果有子类的话)一同工作。
b) 是的重定义Adaptee的行为比较困难。这就需要生成Adaptee的子类并且使得Adapter引用这个子类而不是Adaptee本身。
适配器模式 VS 装饰模式
适配器模式与装饰模式很类似,但仅仅是类似,造成这种类似的原因:两种设计模式在实现上都是使用的对象组合,都可以在转调组合对象的功能前后进行一些附加的处理,因此有这么一个相似性。它们的目的和本质都是不一样的。一般适配器适配是需要改变接口的;而装饰模式是不改接口的,无论多少层装饰都是一个接口。
装饰模式的本质是扩展包装的对象的行为或责任;而适配器模式本质是转换匹配,复用功能。