码迷,mamicode.com
首页 > 其他好文 > 详细

适配器模式

时间:2017-03-03 00:12:49      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:适配器模式   int   nbsp   end   基础上   客户   log   interface   http   

适配器模式

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

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

技术分享

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

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

缺点

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

 

适配器模式

标签:适配器模式   int   nbsp   end   基础上   客户   log   interface   http   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!