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

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

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

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

 

[java]  view plain  copy
  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.     }  
  59. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值