java设计模式之适配器模式

默认适配器是怎样产生的呢?有时我们定义的接口中多个接口方法,如果直接实现此接口,那么需要在实现类中实现所有的方法,往往不同的需要,可能只用到接口中一个会几个方法,但显然用这样的实现类会造成资源的浪费,系统开销的加大。那么如何解决此问题,用适配器模式。

适配器模式的的核心思想是:为原接口类实现一个默认的抽象类,在该抽象类中编写每一个方法的默认实现,当我们需要编写一个具体类时,只需要继承该抽象类,而不需要实现原有的接口,并且不需要所有的接口方法,只实现需要的函数即可。下面看代码:

源接口:Sourceable


public interface Sourceable {

public void operation1();

public void operation2();

}

抽象类:DefaultWrapper,此类实现类接口Sourceable,并提供了两个接口函数的实现,在该实现中什么也不做,目的只是为了给其子类提供一个默认的实现,如下


public abstract class DefaultWrapper implements Sourceable {

public void operation1(){}

public void operation2(){}

}

子类继承自DefaultWrapper,只需实现自己想实现函数,之所以能这样是由于抽象类DefaultWrapper的屏蔽作用,代码如下


public class SourceSub1 extends DefaultWrapper {

public void operation1(){

System.out.println(“hi,run the method operation1 of SourceSub1 “);

}

}


public class SourceSub2 extends DefaultWrapper {

public void operation2(){

System.out.println(“hi,run the method operation2 of SourceSub2”);

}

}

下面编写测试类DefaultWrapper,常见两个对象,然后调用方法operation1,operation2。代码如下


public class DefaultWrapperTest {

public static void main(String[] args) {

Sourcable1 source1 = new SourceSub1();

Sourcable2 source2 = new SourceSub2();

source1.operation1();

source1.operation2();

System.out.println(“——————————————–“);

source2.operation1();

source2.operation2();

}
}

运行该程序的结果如下:


hi,run the method operation1 of SourceSub1

——————————————–

hi,run the method operation2 of SourceSub2

本文来源:不害羞的猪的空间

Mina的IoHandlerAdapter是适配器模式的一个实际应用。IoHandlerAdapter 实现了IoHandler 接口,我们在编写消息处理器的时候就无需再实现 IoHandler 接口、重写其所有方法,只需要继承 IoHandlerAdapter 类,在子类中重写我们自己所需的方法即可。

传统的适配器模式描述并非如此,可以参考如下链接:

http://www.cnblogs.com/houleixx/archive/2008/03/04/1090214.html
http://dev.yesky.com/84/2168584.shtml

此条目发表在java/j2ee分类目录,贴了, 标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据