城市猎人

在一网情深的日子里,谁能说得清是苦是甜,只知道确定了就义无反顾
posts - 1, comments - 7, trackbacks - 0, articles - 89

模式(七):适配器(Adapter)模式

Posted on 2008-07-25 09:17 sailor 阅读(143) 评论(0)  编辑  收藏 所属分类: 模式

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

    类适配器可以分为类适配器和对象适配器

adapter.bmp
实用性
    当需要私用一个现有的类而其接口并不符合你需要的时,就使用适配器;

    适配器改变接口以符合用户的期望;

实例




 1package com.sailor.adapter;
 2
 3
 4/**
 5 * 被适配者
 6 * @author sailor
 7 * Jul 25, 2008 9:35:19 AM
 8 */

 9public class Duck {
10    
11    public Duck() {
12
13    }

14
15    public void fly(){
16        System.out.println("I can fly");
17    }

18    
19    public void quack(){
20        System.out.println("quake!");
21    }

22}

23


 

 1
 2package com.sailor.adapter;
 3
 4/**
 5 * 目标接口
 6 * @author sailor
 7 * Jul 25, 2008 9:43:35 AM
 8 */

 9public interface Turkey {
10
11    public void gobble();
12    public void fly();
13}

14


 

 1
 2package com.sailor.adapter;
 3
 4/**
 5 * 适配器
 6 * @author sailor
 7 * Jul 25, 2008 9:38:10 AM
 8 */

 9public class TurkeyAdapter implements Turkey{
10
11    private Duck duck;
12
13    public TurkeyAdapter(Duck duck) {
14        this.duck = duck;
15    }

16    
17    public void gobble(){
18        duck.quack();
19    }

20    
21    public void fly(){
22        duck.fly();
23    }

24    
25    
26}

27


 

 1
 2package com.sailor.adapter;
 3
 4/**
 5 * 客户端
 6 * @author sailor
 7 * Jul 25, 2008 9:45:29 AM
 8 */

 9public class Client {
10
11    /**
12     * @param args
13     */

14    public static void main(String[] args) {
15        
16        Duck duck = new Duck();
17        
18        Turkey turkey = new TurkeyAdapter(duck);
19        
20        turkey.gobble();
21        turkey.fly();
22    }

23
24}

25


    参考资料:《First Head 设计模式》


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


网站导航: