posts - 0,  comments - 3,  trackbacks - 0

类的适配器模式是把适配的类的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设计模式
<2025年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

留言簿(1)

文章分类

文章档案

搜索

  •  

最新评论