黑马程序员技术交流社区

标题: 继承与装饰设计模式的区别 [打印本页]

作者: ye646682485    时间: 2015-4-30 09:18
标题: 继承与装饰设计模式的区别
用继承完成体系MyReader(专门用来读取数据的类)。
MyReader
       |--MyTextReader:专门用于读取文本数据
                |--MyBufferedTextReader:缓冲区
        |--MyMediaReader:专门用于读取媒体数据
                |--MyBufferedMediaReader:缓冲区
        |--MyDateReader:专门用于读取数据库数据
                |--MyBufferedDateReader:缓冲区
此处体系比较臃肿,降低了类与类之间的关系。但是子类可以复写父类中的方法,增强方法,直接引用子类的对象可以使用子类中特有的方法。
使用装饰模式,如下面例子:
  1. class MyBufferedReader extends MyReader
  2. {
  3.         private MyReader mr =null;
  4.         MyBufferedReader(Myreader mr)
  5.         {
  6.                 this.mr = mr;
  7.         }
  8. }
复制代码

都可以装饰Myreader子类,加入缓冲区能力,不用新建一个子类就写一个缓冲区子类。这样避免了体系臃肿,比继承更加灵活。考虑到多态,所以MyBufferedReader只能使用父类已经有的方法,不能使用子类中特有的方法。下面是装饰后的体系。
MyReader
        |--MyTextReader
        |--MyMediaReader
        |--MyDateReader
        |--MyBufferedReader
还有什么请大家补充 :lol




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2