黑马程序员技术交流社区

标题: 包装设计模式和继承有什么区别 [打印本页]

作者: 黑子    时间: 2014-6-13 21:56
标题: 包装设计模式和继承有什么区别
在设计模式中有一个包装类设计模式,同时通过继承也能完成包装类的功能需求。请问包装模式和继成在本质上有什么区别?
作者: 黑子    时间: 2014-6-15 18:40
答案啊  你在何方?
作者: See_the_sun    时间: 2014-6-15 18:49
  
继承是什么?OOP 三大特征之一

装饰设计模式(包装设计)?为了解决实际中问题出现的设计思想

  事例:流对象作为事例
   读取流--抽象
      文本读取流TextReader
      音频读取流SoundReader
      游戏读取流GameReader
      视频读取流VideoReader

  继承方式扩展原有的流对象
      TextReader
         extends TextReader 重写方法
      SoundReader
         extends SoundReader 重写方法
      GameReader
         extends GameReader 重写方法
      VideoReader
         extends VideoReader 重写方法

  以上的继承体系,庞大,而且臃肿,对于开发者,不好用,对于学习的,也不好学

  用装饰的方式扩展原有的流对象
    TextReader
    SoundReader
    GameReader
    VideoReader

    定义一个扩展流对象,你传递哪一个流,扩展哪一个流
    BufferedReader(读取流)
    BufferedReader(TextReader)
    BufferedReader(GameReader)

  综上所述,两个方法,对原有流对象进行扩展后
  继承的方式,庞大臃肿
  装饰的方式,结构简单,并且更加容易学习和使用。
作者: love~陌    时间: 2014-6-15 19:00
.....................................................................
作者: 倪大大    时间: 2014-6-15 19:01
怎么说呢,你继承只能继承一个类,那么以后你再想继承其他类就不行了 代码的扩展性就不高了
包装类的话就没有这个顾忌了
作者: love~陌    时间: 2014-6-15 19:01
See_the_sun 发表于 2014-6-15 18:49
继承是什么?OOP 三大特征之一

装饰设计模式(包装设计)?为了解决实际中问题出现的设计思想

你们石老师讲的好仔细啊,羡慕啊
作者: See_the_sun    时间: 2014-6-15 20:21
love~陌 发表于 2014-6-15 19:01
你们石老师讲的好仔细啊,羡慕啊

是啊,反正老师都讲过了。对的就贴上来。这个案例不错。你说呢。。大神   博。。又要DOTA吗?
作者: 黑子    时间: 2014-6-15 22:04
可劲造吧!骚年们!
作者: love~陌    时间: 2014-6-15 22:11
See_the_sun 发表于 2014-6-15 20:21
是啊,反正老师都讲过了。对的就贴上来。这个案例不错。你说呢。。大神   博。。又要DOTA吗? ...

头疼~打篮球太累了
作者: love~陌    时间: 2014-6-15 22:12
黑子 发表于 2014-6-15 22:04
可劲造吧!骚年们!

黑子明天见~




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