首页 > 其他 > 详细

装饰者模式

时间:2015-11-29 14:56:47      阅读:247      评论:0      收藏:0      [点我收藏+]

1、需求分析:

  1. 编写一个类拓展BuffereedReader的功能,增强readLine方法返回的字符串 带有行号
  2. 编写一个类拓展BuffereedReader的功能,增强readLine方法返回的字符串 带有分号
  3. 编写一个类拓展BuffereedReader的功能,增强readLine方法返回的字符串 带有双引号
  4. 编写一个类拓展BuffereedReader的功能,增强readLine方法返回的字符串 带有行号+分号
  5. 编写一个类拓展BuffereedReader的功能,增强readLine方法返回的字符串 带有分号+双引号
  6. 编写一个类拓展BuffereedReader的功能,增强readLine方法返回的字符串 带有行号+双引号
  7. 编写一个类拓展BuffereedReader的功能,增强readLine方法返回的字符串 带有分号+行号+双引号

2、增强一个类的功能的时候,我们可以选择使用继承。

通过继承实现增强一个类的功能优点:代码结构清晰,通俗易懂。

----------------| Reader

-------------------|BufferedReader

---------------------|BufferedLineNum 带行号

---------------------|BufferedSemi  带分号

---------------------|BufferedQuto 带引号

---------------------|子类

缺点:使用不灵活,会导致继承的体系过于庞大

 

class BufferedLineNum extends BufferedReader{
    int count=1;
    public BufferedLineNum(Reader in) {
        super(in);
    }

    @Override
    public String readLine() throws IOException {
        String line=super.readLine();
        if(line==null) return null;
        line=count+"   "+line;
        count++;
        return line;
    }    
}

class BufferedSemi extends BufferedReader{
    public BufferedSemi(Reader in) {
        super(in);
    }

    @Override
    public String readLine() throws IOException {
        String line=super.readLine();
        if(line==null) return null;
        line=line+";";
        return line;
    }    
}

 

3、装饰者模式的引出:

 

装饰者模式

原文:http://www.cnblogs.com/lyjs/p/5004717.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!