我的java天地

适配器模式详解

和尚接口: 
public   interface  和尚 

void  吃斋(); 

void  打坐(); 

void  练武(); 

void  睡觉(); 

}
 
作为适配器的抽象类 天星 

public   abstract   class  天星  implements  和尚 

public   void  吃斋() 



}
 

public   void  打坐() 


}
 

public   void  睡觉() 


}
 

public   void  练武() 


}
 

然后是具体实现 鲁智深 
public   class  鲁智深  extends  天星 


public   void  练武()


}
 


1.适配器模式在这里应该是,鲁智深拥有和尚的所有功能如吃斋(),打坐(),但是练武这个功能对鲁智深和别的和尚不同,所以要单独配置。

2.使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,就应该考虑用适配器模式
  两个类所做的事情相同或相似,但是具有不同的接口时要使用它

3.当客户类调用适配器的方法时,在适配器类的内部调用适配者类的方法,这个过程对客户类是透明的,客户类并不直接访问适配者类。因此,适配器可以使由于借口不兼容而不能交互的类可以一起工作(work together)。

4.当你实现某个接口,你必须实现它所有的方法。
如果这个接口有很多的方法,而你只需要关注其中的一个,在这种情况下,适配器就是一个最佳选择了。

5.适配器就好像一个转接器一样
有些参数可能不接受某些接口类型
这时使用适配器将这些接口,经过某些处理后实现另一接口类型,就可以接上去了

二、
/**   
* 源角色   
*/
    
public class Adaptee {    
public int get220v(){    
return 220;    
}
    
}
   
  
/**   
* 目标角色   
*/
    
public interface Target {    
int get110v();    
int get220v();    
}
   
  
/**   
* 适配器角色:扩展源角色,实现目标角色,从而使得目标角色改动时候,不用改动源角色,只要改动适配器   
*/
    
public class Adapter extends Adaptee implements Target{    
public int get110v(){    
return 110;    
}
    
}
   
  
/**   
* 客户端   
*/
    
public class Client {    
public static void main(String rags[]) {    
new Client().test();    
}
   
  
public void test() {    
Target target 
= new Adapter();    
int v1 = target.get110v();    
int v2 = target.get220v();    
}
    
}
  

适配器通过扩展源角色,同时实现目标接口,从而满足了同时提供220v,110v电压的要求。

posted on 2010-09-26 11:50 tobyxiong 阅读(624) 评论(0)  编辑  收藏 所属分类: java


只有注册用户登录后才能发表评论。


网站导航:
 
<2010年9月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

常用链接

留言簿(3)

随笔分类(144)

随笔档案(157)

相册

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜