注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

东东的博客

江南烟雨,同大家一起分享

 
 
 

日志

 
 

设计模式读书笔记之适配器模式(Adapter)  

2010-07-13 17:52:42|  分类: 设计模式相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

特点:
1 实现了客户希望的接口;
2 持有被适配的对象;
3 不改动客户代码和被适配对象。

示例代码:
有一个客户类学生, 骑自行车上学, 自行车是该客户类学生的期望接口, 后来学生长大了,骑摩托车,摩托车的接口不是学生期望的,so...

 

  1. //客户希望的接口  
  2. package designpattern.adapter;  
  3. public interface Bike {  
  4.     public void go();  
  5. }  
  6.   
  7. //  
  8. package designpattern.adapter;  
  9. public class LightBike implements Bike{  
  10.     public void go() {  
  11.         System.out.println("你用的是轻便自行车, 跑的慢。");  
  12.     }  
  13. }  
  14.   
  15. //需要适配的接口  
  16. package designpattern.adapter;  
  17. public interface Moto {  
  18.     public void go();  
  19. }  
  20.   
  21. //  
  22. package designpattern.adapter;  
  23. public class EMoto implements Moto{  
  24.     public void go() {  
  25.         System.out.println("你用的是电动摩托车, 跑的快。");  
  26.     }  
  27. }  
  28.   
  29. //客户类  
  30. package designpattern.adapter;  
  31. public class Student {  
  32.     public void gotoSchool(Bike b){  
  33.         b.go();  
  34.     }  
  35. }  
  36. //摩托车适配器  
  37. package designpattern.adapter;  
  38. public class MotoAdapter implements Bike{  
  39.     private Moto moto;  
  40.     public MotoAdapter(Moto m){  
  41.         this.moto = m;  
  42.     }  
  43.     public void go() {  
  44.         moto.go();  
  45.     }  
  46. }  
  47.   
  48. //测试用例  
  49. package designpattern.adapter;  
  50. public class Test {  
  51.     public static void main(String[] args){  
  52.         Bike b = new LightBike();  
  53.         Moto m = new EMoto();  
  54.         Student child = new Student();  
  55.         child.gotoSchool(b);  
  56.         Student universityStudent = new Student();  
  57.         universityStudent.gotoSchool(new MotoAdapter(m));  
  58.     }  

转自:http://blog.csdn.net/sunxing007/archive/2010/03/15/5382641.aspx
  评论这张
 
阅读(582)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017