首页 > 其他 > 详细

适配器模式

时间:2015-06-05 22:59:00      阅读:182      评论:0      收藏:0      [点我收藏+]



适配器模式有2种,第一种是“面向类的适配器模式”,第二种是“面向对象的适配器模式”。


1.类的适配器

先说“面向类的适配器模式”。顾名思义,这类适配器模式就是主要用于,单一的为某个类而实现适配的这样一种模式,为什么说只为某个类去实现,一会提到,我们先展示这种类适配模式的代码实现。

package com.visionsky.DesignPattern; 


//目标接口的代码如下: 
interface Target { 
    void Request(); 
} 
 
 //源的代码如下:
 class Adaptee { 
    void SpecificRequst() { 
        System.out.println("Adaptee‘s SpecificRequst"); 
    } 
} 
 
//适配器的代码如下:
class Adapter extends Adaptee implements Target  
{ 
 
    @Override 
    public void Request() { 
         System.out.println("Adapter‘s Request"); 
          super.SpecificRequst(); 
    } 
 
} 
 
public class AdapterDemo { 
 
    /** 
     * @param args 
     */ 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
        Target t=new Adapter(); 
        t.Request(); 
    } 
 
}

好了,代码看完然后要做一些说明了,之前遗留的一个问题,为什么称其为类适配模式呢?很显然的,Adapter类继承了Adaptee类,而在Java这种单继承的语言中也就意味着,他不可能再去继承其他的类了,这样也就是这个适配器只为Adaptee这一个类服务,所以称其为类适配模式。


2.对象的适配器

说完类的适配模式,我们要开始说第2种对象的适配器模式了。对象适配器模式是把“源”作为一个对象聚合到适配器类中。同样的话不多说,贴上代码:

//源的代码以及目标代码同上,再次不再赘述。
//仅贴出适配器代码:

class Adapter  implements Target  
{ 
 
    private Adaptee adaptee; 
    public Adapter() 
    { 
        this.adaptee=new Adaptee(); 
    } 
     
    @Override 
    public void Request() { 
         System.out.println("Adapter‘s Request"); 
         adaptee.SpecificRequst(); 
    } 
 
} 
 
public class AdapterDemo { 
 
    /** 
     * @param args 
     */ 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
        Target t=new Adapter(); 
        t.Request(); 
    } 
 
}

对象的适配器模式,把“源”作为一个构造参数传入适配器,然后执行接口所要求的方法。这种适配模式可以为多个源进行适配,弥补了类适配模式的不足。


3.比较

1.类的适配模式用于单一源的适配,由于它的源的单一话,代码实现不用写选择逻辑,很清晰;而对象的适配模式则可用于多源的适配,弥补了类适配模式的不足,使得原本用类适配模式需要写很多适配器的情况不复存在,弱点是,由于源的数目可以较多,所以具体的实现条件选择分支比较多,不太清晰。

2.适配器模式主要用于几种情况:(1)系统需要使用现有的类,但现有的类不完全符合需要。(2)讲彼此没有太大关联的类引进来一起完成某项工作(指对象适配)。


本文出自 “一无所有-天行者” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1658944

适配器模式

原文:http://tianxingzhe.blog.51cto.com/3390077/1658944

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!