适配器模式

适配器模式

适配器模式可以把一个类的接口变换成客户端所期待的另一种接口,使得原本因接口不匹配而无法一起工作的两个类可以一起工作。

适配器模式的用途,在网上找了一幅图,挺形象的:

比方说我有一个台灯,其插头是标准的两相的交流电插头,即阳极、阴极。我旅游到了一个地方想用自己的台灯,但发现旅馆里面只有三相的插头,即在阳极、阴极的基础上还多了一个地级。这时候怎么办呢,一个两相到三相的转换器(适配器)就能解决这个问题了,而这正是本模式所做的事情。

适配器分两种,类适配器和对象适配器。类适配器是把适配的类的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.有更好的扩展性

缺点

过多使用适配器会使系统凌乱,因此除非必要,不推荐使用适配器,而是直接对系统重构。 

原文地址:https://www.cnblogs.com/tp123/p/6493059.html