首页 > 其他 > 详细

适配器模式小试

时间:2014-03-22 16:33:57      阅读:443      评论:0      收藏:0      [点我收藏+]

我们看一下《研磨设计模式》中的定义:

将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

适配器模式的本质是——转换匹配,复用功能。

1、首先我们定义一个接口PastInterface,如下:

bubuko.com,布布扣
package adapter;

public interface PastInterface {

    public void past1();


    public void past2();
}
bubuko.com,布布扣

2、一个简单是实现类,如下:

bubuko.com,布布扣
package adapter;

public class PastImpl implements PastInterface{

    PastImpl(){
        System.out.println("我是PastImpl接口的实现");
    }
public void past1() {
        // TODO Auto-generated method stub
        System.out.println("运行Past接口的第一个方法");
    }

    public void past2() {
        // TODO Auto-generated method stub
        System.out.println("运行Past接口的第二个方法");
    }
}
bubuko.com,布布扣

3、客户端调用时,非常简单:

bubuko.com,布布扣
package adapter;

public class Client {

    public static void main(String[] args) {
        PastInterface past = new PastImpl();
        past.past1();
        past.past2();
    }
}
bubuko.com,布布扣

4、结果如下:

我是PastImpl接口的实现
运行Past接口的第一个方法
运行Past接口的第二个方法

5、现在需求变更,要用新的接口实现过去的那些功能,新的接口如下:

bubuko.com,布布扣
package adapter;

public interface PresentInterface {

    public void present1();

    public void present2();
}
bubuko.com,布布扣

6、适配器模式是这样解决问题的。

bubuko.com,布布扣
package adapter;

public class Adapter implements PresentInterface {

    PastInterface past = new PastImpl();

    public void present1() {
        // TODO Auto-generated method stub
        past.past1();
    }

    public void present2() {
        // TODO Auto-generated method stub
        past.past2();
    }

}
bubuko.com,布布扣

如上,Adapter类实现了当前接口PresentInterface,其方法则由原来的接口方法实现,可谓“换汤不换药”,就像一个简单的转换器,把原本的功能包装一下,变成了现在的功能。

7、于是,客户端调用时,如下:

bubuko.com,布布扣
package adapter;

public class Client2 {

    public static void main(String[] args) {
        //创建一个适配器,由于适配器实现了新接口的功能,所以直接调用适配器的方法。
        Adapter adapter = new Adapter();
        adapter.present1();
        adapter.present2();
    }
}
bubuko.com,布布扣

最终结果跟原结果没有任何区别。

适配器模式小试,布布扣,bubuko.com

适配器模式小试

原文:http://www.cnblogs.com/zrtqsk/p/3617285.html

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