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

设计模式(七) : 结构型模式--适配器模式

时间:2014-06-01 23:59:18      阅读:427      评论:0      收藏:0      [点我收藏+]

标签:des   c   style   class   blog   code   

适配器模式主要是为了解决接口不符合系统需要的问题。分成类的适配器和对象的适配器。

1. 类的适配器:

bubuko.com,布布扣

示意性代码:

bubuko.com,布布扣
package com.javadesignpattern.Adapter;

public interface Target {
    
    
    public void sampleOperation1();
    
    public void sampleOperation2();

}
bubuko.com,布布扣
bubuko.com,布布扣
package com.javadesignpattern.Adapter;

public class Adaptee {
    
    public void sampleOperation1() {
        System.out.println(Adaptee.class +  " : sampleOperation1");        
    }
    
}
bubuko.com,布布扣
1
2
3
4
5
6
7
8
9
10
package com.javadesignpattern.Adapter;
 
public class Adapter extends Adaptee implements Target{
 
    public void sampleOperation2() {
        // TODO Auto-generated method stub
        System.out.println(Adapter.class " : sampleOperation2");
    }
 
}
bubuko.com,布布扣
package com.javadesignpattern.Adapter.Class;

public class Client {
    
    public static void main(String[] args){
        Target target = new Adapter();
        target.sampleOperation1();
        target.sampleOperation2();
        
    }

}
bubuko.com,布布扣

 

2. 对象的适配器

bubuko.com,布布扣

示意性代码:

Target类和Adaptee类和上面的类的适配器是一样的

bubuko.com,布布扣
package com.javadesignpattern.Adapter.object;

public class Adaptor implements Target{
    private Adaptee adaptee;
    
    public Adaptor(Adaptee adaptee){
        super();
        this.adaptee = adaptee;
    }

    public void sampleOperation2() {
        // TODO Auto-generated method stub
        System.out.println(Adaptor.class +  " : sampleOperation2");    
    }

    public void sampleOperation1() {
        // TODO Auto-generated method stub
        adaptee.sampleOperation1();
    }

}
bubuko.com,布布扣
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.javadesignpattern.Adapter.object;
 
public class Client {
     
    public static void main(String[] args){
        Adaptee adaptee = new Adaptee();
        Target target = new Adaptor(adaptee);
        target.sampleOperation1();
        target.sampleOperation2(); 
         
    }
 
}

 

对象适配器和类的适配器的优缺点:

1. 类的适配器使用继承,是一种静态的适配方式; 对象的适配器是利用组合,是一种动态的适配方式;所以,类的适配器只是适配了这一个类,Adapter类和Adaptee类的子类是不能一块工作的;对象的适配器的话,adapter类和adaptee类的子类是可以一起工作的。

2. 类的是适配器是可以重定义Adaptee的部分行为的(重写),而对象的适配器的话,重定义比较困难,但是增加一些方法比较简单。

 

对于尽量使用合成、聚合的方式而不是使用继承,推荐使用对象的适配器。但是具体情况具体分析。

 

设计模式(七) : 结构型模式--适配器模式,布布扣,bubuko.com

设计模式(七) : 结构型模式--适配器模式

标签:des   c   style   class   blog   code   

原文地址:http://www.cnblogs.com/ChristyorRuth/p/3763324.html

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