2007-07-24

(6)结构模式之Adapter 模式

关键字: 模式, pattern

 

Y先生今天要去买书。Q女士拉住他:“等一下,顺便帮我买点菜回来。”

结果... ... Y先生买完书回来,就把买菜的事给忘了!

Q女士十分生气:你的记性怎么这么差阿!!

Y先生很委屈:买书和买菜根本是两个不同的事,我当然很容易忘了。

Q女士:好,那我现在如果就是要把它们变成一个事呢?

Y先生:你这是违反自然规律... ....

Q女士:哼,那是你不动脑筋!看我的!

买书用这个吧:

java 代码
  1. public class BuyBook {   
  2.        
  3.     public void buy() {   
  4.            
  5.     }   
  6.        
  7. }  

买菜用这个吧:

java 代码
  1. public class BuyCai {   
  2.        
  3.     public void buycai() {   
  4.            
  5.     }   
  6.        
  7. }  

Y先生心想:竟然还用拼音!这就是所谓的垃圾的代码的产生了!

可是Y先生不敢这么说。

Y先生:我明白了,你想让我这么做吧:

java 代码
  1. public static void main(String[] args) {   
  2.        
  3.     BuyBook b1 = new BuyBook();   
  4.     BuyCai b2 = new BuyCai();   
  5.        
  6.     b1.buy();   
  7.     b2.buycai();   
  8.        
  9. }  

Q女士:这么不行,你还是容易忘,看我的:

java 代码
  1. public class BuyAdapter extends BuyBook{   
  2.        
  3.     private BuyCai cai;   
  4.        
  5.     public BuyAdapter(BuyCai cai) {   
  6.         // TODO Auto-generated constructor stub   
  7.         this.cai = cai;   
  8.     }   
  9.   
  10.     public void buy() {   
  11.         // TODO Auto-generated method stub   
  12.         super.buy();   
  13.         cai.buycai();   
  14.     }          
  15.        
  16. }  

Y先生:我明白了,我应该这么来:

java 代码
  1. public static void main(String[] args) {   
  2.        
  3.     BuyAdapter adapter = new BuyAdapter(new BuyCai());   
  4.     adapter.buy();   
  5.        
  6. }  

Q女士:嗯,这么一来你就不会忘了!怎么样,两个毫不相干的事情被我拧成一起了吧?

Y先生:嗯,老婆真厉害!

其实Y先生是故意不去买菜的... ... 可是现在,他不买也不行了... ...

评论
发表评论

您还没有登录,请登录后发表评论

yananay
搜索本博客
我的相册
D35bafa8-5bf0-475f-aa06-16f3080557a1-thumb
tdd
共 3 张
存档
最新评论