适配器模式
Posted 皇甫哲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了适配器模式相关的知识,希望对你有一定的参考价值。
适配器模式
适配器模式可以把一个类的接口变换成客户端所期待的另一种接口,使得原本因接口不匹配而无法一起工作的两个类可以一起工作。
适配器模式的用途,在网上找了一幅图,挺形象的:
比方说我有一个台灯,其插头是标准的两相的交流电插头,即阳极、阴极。我旅游到了一个地方想用自己的台灯,但发现旅馆里面只有三相的插头,即在阳极、阴极的基础上还多了一个地级。这时候怎么办呢,一个两相到三相的转换器(适配器)就能解决这个问题了,而这正是本模式所做的事情。
适配器分两种,类适配器和对象适配器。类适配器是把适配的类的api转换成目标类的api,涉及的角色:
1.目标角色
希望得到的接口
2.源角色
需要适配的接口
3.适配器角色
模式的核心,适配器把原借款转换为目标接口
类适配器实例
目标接口
1 public interface ClassTarget { 2 public void sampleOperation1(); 3 4 public void sampleOperation2(); 5 }
源角色
1 public class ClassAdaptee 2 { 3 public void sampleOperation1(){} 4 }
适配器角色
1 public class ClassAdapter extends ClassAdaptee implements ClassTarget 2 { 3 public void sampleOperation2() 4 { 5 // 相关代码 6 } 7 }
对象适配器实例
目标接口
1 public interface ObjectTarget 2 { 3 public void sampleOperation1(); 4 5 public void sampleOperation2(); 6 }
源角色
1 public class ObjectAdaptee 2 { 3 public void sampleOperation1(){} 4 }
对象适配器采用了委派关系将源角色和适配器角色关联
1 public class ObjectAdapter 2 { 3 private ObjectAdaptee objectAdaptee; 4 5 public ObjectAdapter(ObjectAdaptee objectAdaptee) 6 { 7 this.objectAdaptee = objectAdaptee; 8 } 9 10 public void sampleOperation1() 11 { 12 this.objectAdaptee.sampleOperation1(); 13 } 14 15 public void sampleOperation2(){} 16 }
适配器的核心就是把一个类的接口转换成客户端期待的另一种接口。
适配器模式的优缺点
优点
1.有更好的复用性
2.有更好的扩展性
缺点
过多使用适配器会使系统凌乱,因此除非必要,不推荐使用适配器,而是直接对系统重构。
以上是关于适配器模式的主要内容,如果未能解决你的问题,请参考以下文章