适配器模式

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

  在软件开发中,系统的数据和行为都正确,但是接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配,适配器主要用于希望复用一些现有的类,但是接口又与复用环境要求不一致的情况。

  

  我们看代码:

  首先是target类,也就是客户需要的类,里面有一个方法是request()

  

1 package adapter;
2 
3 public class Target {
4     public void request(){
5         System.out.println("普通请求");
6     }
7 }

  然后是已经存在类,里面有一个方法是specificRequest()

  

1 public class Adaptee {
2     public void specificRequest() {
3         System.out.println("特殊请求");
4     }
5 }

  我们看到客户需要的方法和现有的方法是不一样的,但是也许现有的方法已经被使用,或者客户需要的方法是不能更改的,所以,我们就可以使用适配器模式了。

 

1 public class Adapter extends Target{
2     private Adaptee adaptee = new Adaptee();
3     
4     @Override
5     public void request() {
6         adaptee.specificRequest();
7     }
8 }

  客户端调用:

1 public class MainClass {
2     public static void main(String[] args) {
3         Target client = new Adapter();
4         
5         client.request();
6     }
7 }

  我们看到,尽管使用适配器可以使后期维护时变得省事,但是其实这样的设计是不好的,我们在设计之初,就应该统一使用接口,而不是到了后期,才使用类似适配器这样的模式来亡羊补牢的进行修改。适配器模式仅仅使用在无法改变原有代码和设计时才使用,相反,我们第一应该考虑的是重构。

posted @ 2012-10-31 11:39  寒剑飘香  阅读(158)  评论(0编辑  收藏  举报