装饰模式(Decorator)简单示例

@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

经常在别人的代码里看见 XWrapper,YWrapper,ZWrapper, 原来这种编程的策略就是装饰模式。装饰模式的类图如下:






 1
 2//Component
 3interface IDataRetriever{
 4    String getData();
 5}

 6//Concrete Component
 7class DataRetriever implements IDataRetriever{
 8    String getData(){
 9        return "Retrieve Data.";
10    }

11}

12//Abstract Decorator
13abstract class AbstractDataRetriever implements IDataRetriever{
14    protected IDataRetriever retriever;
15    public AbstractDataRetriever(IDataRetriever retriever){
16        this.retriever = retriever;
17    }

18}

19//Concrete Decorator
20class DataRetrieverWrapper extends AbstractDataRetriever{
21    DataRetrieverWrapper(IDataRetriever retriever){
22        super(retriever);
23    }

24    String getData(){
25        println "processing data";
26        this.retriever.getData();
27    }

28}

29
30def retriever = new DataRetriever();
31def wrapper = new DataRetrieverWrapper(retriever);
32wrapper.getData();
33
34
35class DatabaseRetriever implements IDataRetriever{
36    String getData(){
37        return "Retrieve Data from Database";
38   }

39}

40
41
42wrapper = new DataRetrieverWrapper(new DatabaseRetriever());
43wrapper.getData();
44
45


Kyle Wang

posted on 2012-02-23 22:50 王树东 阅读(195) 评论(0)  编辑  收藏 所属分类: Design Pattern Learning and Sharing


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


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

公告

常用链接

留言簿

随笔分类(17)

随笔档案(15)

文章分类(4)

文章档案(5)

收藏夹(4)

Algorithm

Design

Environment Setup

Installer

Maven

MINA

OS

Skills for Java

VIM

搜索

最新评论

阅读排行榜

评论排行榜