oyjpArt ACM/ICPC算法程序设计空间

// I am new in programming, welcome to my blog
I am oyjpart(alpc12, 四城)
posts - 224, comments - 694, trackbacks - 0, articles - 6

JAVA常用设计模式1 Adapter

Posted on 2008-01-15 22:45 oyjpart 阅读(1889) 评论(0)  编辑 收藏 引用 所属分类: 程序设计

一个适配器允许不带有兼容接口的组件之间进行通信。
适配器模式是使用面向对象设计概念的优秀示例,其中一个原因就是因为他非常简单。
同时,它也是有关三个重要设计原则的优秀示例:委托,继承和抽象。

概念UML类图

实例类图


 1// Triks.java
 2
 3package oyjpart.designpattern;
 4
 5public interface Tricks {
 6    public void walk();
 7    public void run();
 8    public void fetch();
 9}

10


 

 1// DogShow.java
 2
 3package oyjpart.designpattern;
 4
 5public class DogShow {
 6    public void compete(Tricks target) {
 7        target.run();
 8        target.walk();
 9        target.fetch();
10    }

11    
12    public static void main(String[] args) {
13        OldDog oldDog = new OldDog("Tim");
14        OldDogTricksAdapter oldDogTricksAdapter = new OldDogTricksAdapter(oldDog); 
15        new DogShow().compete(oldDogTricksAdapter);
16    }

17}

18
19

 

 

 1// OldDog.java
 2
 3package oyjpart.designpattern;
 4
 5public class OldDog {
 6    String name;
 7    
 8    public OldDog(String name) {
 9        this.name = name;
10    }

11    
12    public void walk() {
13        System.out.println("Old Dog " + name + " is walking");
14    }

15    
16    public void sleep() {
17        System.out.println("Old Dog " + name + " is sleeping");
18    }

19    
20}

21
22

 

 

 1
 2// OldDogTricksAdapter.java
 3
 4package oyjpart.designpattern;
 5
 6public class OldDogTricksAdapter implements Tricks {
 7    private OldDog adaptee;
 8    
 9    public OldDogTricksAdapter(OldDog oldDog) {
10        this.adaptee = oldDog;
11    }

12
13    public void walk() {
14        System.out.println("This dog can walk");
15    }

16
17    public void fetch() {
18        System.out.println("This dog cannot fetch");
19    }

20    
21    public void run() {
22        System.out.println("This dog cannot run");
23    }

24}

25
26

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理