关闭

不兼容结构的协调——适配器模式(三)

标签: 适配器模式
331人阅读 评论(0) 收藏 举报
分类:

4 类适配器

       除了对象适配器模式之外,适配器模式还有一种形式,那就是类适配器模式,类适配器模式和对象适配器模式最大的区别在于适配器和适配者之间的关系不同,对象适配器模式中适配器和适配者之间是关联关系(适配器中保留适配者的实例),而类适配器模式中适配器和适配者是继承关系,类适配器模式结构如图9-5所示:

9-5 类适配器模式结构图

       根据类适配器模式结构图,适配器类实现了抽象目标类接口Target,并继承了适配者类,在适配器类的request()方法中调用所继承的适配者类的specificRequest()方法,实现了适配。

       典型的类适配器代码如下所示:

  1. class Adapter extends Adaptee implements Target {  
  2.     public void request() {  
  3.         specificRequest();  
  4.     }  
  5. }  

       由于JavaC#等语言不支持多重类继承,因此类适配器的使用受到很多限制,例如如果目标抽象类Target不是接口,而是一个类,就无法使用类适配器;此外,如果适配者Adapter为最终(Final)类,也无法使用类适配器。在Java等面向对象编程语言中,大部分情况下我们使用的是对象适配器,类适配器较少使用。

 

疑问思考

       在类适配器中,一个适配器能否适配多个适配者?如果能,应该如何实现?如果不能,请说明原因?

     (不可以,适配者类一般为具体的类,Java不能实现多重继承)

  

 

5 双向适配器

       在对象适配器的使用过程中,如果在适配器中同时包含对目标类和适配者类的引用,适配者可以通过它调用目标类中的方法,目标类也可以通过它调用适配者类中的方法,那么该适配器就是一个双向适配器,其结构示意图如图9-6所示:

9-6 双向适配器结构示意图

       双向适配器的实现较为复杂,其典型代码如下所示:

  1. class Adapter implements Target,Adaptee {  
  2.     //同时维持对抽象目标类和适配者的引用  
  3.     private Target target;  
  4.     private Adaptee adaptee;  
  5.       
  6.     public Adapter(Target target) {  
  7.         this.target = target;  
  8.     }  
  9.       
  10.     public Adapter(Adaptee adaptee) {  
  11.         this.adaptee = adaptee;  
  12.     }  
  13.       
  14.     public void request() {  
  15.         adaptee.specificRequest();  
  16.     }  
  17.       
  18.     public void specificRequest() {  
  19.         target.request();  
  20.     }  
  21. }  

       在实际开发中,我们很少使用双向适配器。

 

【作者:刘伟  http://blog.csdn.net/lovelion

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

不兼容结构的协调——适配器模式(三)

9.4 类适配器        除了对象适配器模式之外,适配器模式还有一种形式,那就是类适配器模式,类适配器模式和对象适配器模式最大的区别在于适配器和适配者之间的关系不同,对象适配器模式中适配器和适配者之间是关联关...
  • wangeclipse
  • wangeclipse
  • 2013-12-06 12:30
  • 467

不兼容结构的协调——适配器模式(三)

9.4 类适配器        除了对象适配器模式之外,适配器模式还有一种形式,那就是类适配器模式,类适配器模式和对象适配器模式最大的区别在于适配器和适配者之间的关系不同,对象适配器模式中适配器和适配者之间是关联关系,...
  • csdn_ds
  • csdn_ds
  • 2017-11-13 09:30
  • 43

不兼容结构的协调——适配器模式(一)

我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器或变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容,如图9-1所示:图9-1 电源适配器示意图  ...
  • LoveLion
  • LoveLion
  • 2013-02-28 23:47
  • 17815

不兼容结构的协调——适配器模式(三)

9.4 类适配器       除了对象适配器模式之外,适配器模式还有一种形式,那就是类适配器模式,类适配器模式和对象适配器模式最大的区别在于适配器和适配者之间的关系不同,对象适配器模式中适配器和适配者之间是关联关系,而类适配器模式中适配器和...
  • LoveLion
  • LoveLion
  • 2013-03-01 09:07
  • 17120

不兼容结构的协调——适配器模式(一)

我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器或变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容,如图9-1所示: 图9-1 电源适配器示意图 ...
  • csdn_ds
  • csdn_ds
  • 2017-11-12 00:04
  • 28

不兼容结构的协调——适配器模式

什么是适配器模式在适配器模式中引入了一个被称为适配器(Adapter)的包装类,而它所包装的对象称为适配者(Adaptee),即被适配的类。适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用。也就是说:当客户类调用适配器的方法时,在适配器类的内部将调用适配者类的方法,而这个过程对客户类是透...
  • Todo_
  • Todo_
  • 2016-03-01 14:40
  • 566

不兼容结构的协调——适配器模式

转:http://blog.csdn.net/lovelion/article/details/8624325 我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器...
  • lynchyo
  • lynchyo
  • 2014-08-21 15:23
  • 362

不兼容结构的协调——适配器模式(一)

我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器或变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容,如图9-1所示: 图9-1 电源适配器...
  • wangeclipse
  • wangeclipse
  • 2013-12-06 12:29
  • 429

不兼容结构的协调——适配器模式(一)

我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器或变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容,如图9-1所示: 图9-1 电源适配器示意图 ...
  • Mark_LQ
  • Mark_LQ
  • 2015-07-10 19:38
  • 581

不兼容结构的协调——适配器模式

本文转载自 :http://blog.csdn.net/lovelion/article/details/8624325 我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapt...
  • yzf279533105
  • yzf279533105
  • 2016-01-03 18:44
  • 210
    个人资料
    • 访问:218479次
    • 积分:3191
    • 等级:
    • 排名:第12450名
    • 原创:72篇
    • 转载:132篇
    • 译文:0篇
    • 评论:35条
    最新评论