类的适配器模式是把适配的类的API转换为目标类的API.在以下各种情况需要使用适配器模式:
1)系统需要使用现有的类,而此类的接口不符合系统的需要.
2)想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作.这些原类不一定有很复杂的接口.
3)(对对象的适配器模式)在设计里,需要改变多个已有的子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器类,而这不太实际.
下面通过一个实际的问题来理解适配器模式.
问题:请做一个Kittie具体类,并实现miao(),catchRat(),run(),sleep()方法,再做一个Puppie的接口,要求有wao(),fetchBall(),run(),sleep()方法.
假设现在客户需要一只Puppie,可是只找到一只Kittie,所以需要适配器Jalion把Kittie适配成Puppie.
代码如下:
===============================================================================
类Kittie
public class Kittie {
public void miao()
{
}
public void run()
{
}
public void sleep()
{
}
}
接口Puppie
public interface Puppie {
public void wao();
public void fetchBall();
public void run();
public void sleep();
}
适配器Jalion
public class Jalion extends Kittie implements Puppie {
public void fetchBall() {
}
public void wao() {
}
public void run()
{
super.run();
}
public void sleep()
{
super.sleep();
}
}
================================================================================
在本例中,系统需要的是一个Puppie类,但现在只找到一个Kittie类,通过一个适配器,把功能和Puppie相近的类转换成了符合要求的Puppie类.

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
适配器模式之缺省适配器模式
当一个接口定义了n个方法
public interface interfaceA {
public void method1();
public void method2();
public void method3();
public void method4();
public void method5();
public void method6();
public void method7();
}
当一个类需要实现这个接口时,必须实现所有的方法,即使是你不需要的恶方法也得默认空实现.造成了浪费和麻烦.
使用适配器模式可以解决此问题
定义一个抽象类,实现接口interfaceA
public abstract class AbstractA implements interfaceA {
public void method1() {}
public void method2() {}
public void method3() {}
public void method4() {}
public void method5() {}
public void method6() {}
public void method7() {}
}
然后让实体类继承抽象类
public class ClassA extends AbstractA {
public void method1()
{
}
public void method7()
{
}
}
这样就可以在类中添加感兴趣的方法了.在awt事件监听器中,许多都是用了缺省适配器模式.

posted on 2007-07-01 10:21
李桢 阅读(404)
评论(0) 编辑 收藏 所属分类:
java设计模式