锁定老帖子 主题:我个人对装饰模式的理解
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-20
最后修改:2011-04-20
个人理解如下: 首先 看一下 “装饰" 这个 字眼,但从 词性上来说 他是一个 动词 但是又可以作为一个名词(语文不好 这样说 解释词性 但愿不要误导他人) 这样在我看来 很直白的就认为 让其他的东西 去修饰 另一个东西(我更喜欢 把装饰模式 叫做 修饰模式) 理解的意思 应该就很好理解了。。。 说一句很简单的话吧"给我一个青颜色的小小的香蕉苹果"(这里所谓的香蕉,是苹果中的一个种类 类似 "红富士" 这个 品种) 这一句话中 带有了。。形容词 。。。那么"苹果" 这个名词 就是 被 "青颜色" 来修饰的 如果 转换成代码的话 应该就是一个很典型的 "装饰模式"了 。。。 代码: public abstract class Apple{ String color; String size; public String getColor(){ return color; } public String getSize(){ return size; } } //香蕉 苹果 public class StubApple extends Apple{ } // 这是 " 颜色" 这个形容词 的父类 有可能是 红色的 白色的 。。。。。 public abstract class color extends Apple{ public abstract String getColor();//让具体的颜色的子类 去实现吧 } // 这是 " 大小" 这个形容词 的父类 有可能是 很大的 中型的 很小的 。。。。。 public abstract class color extends Apple{ public abstract String getSize();//让具体的大小的子类 去实现吧 } 但是请注意 不管是 颜色的子类 还是 大小的子类 。。。他们在实现Color 和 Size 这些基类的时候 都要保存 Apple 这个实例 也就是 修饰者要保存 被修饰 的对象... 在此欢迎大家 给予 指点 。。。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-04-22
不是我打击楼主啊.. 这理解实在是惨不忍睹啊
要不你可以看一下我这篇博文http://bolide74.iteye.com/admin/blogs/1007086 下半部分有介绍装饰模式的,应该比较容易理解 当然我的这个系列博文也有介绍其他模式的,有兴趣也可以捧捧场 |
|
返回顶楼 | |
发表时间:2011-04-24
bolide74 写道 不是我打击楼主啊.. 这理解实在是惨不忍睹啊
要不你可以看一下我这篇博文http://bolide74.iteye.com/admin/blogs/1007086 下半部分有介绍装饰模式的,应该比较容易理解 当然我的这个系列博文也有介绍其他模式的,有兴趣也可以捧捧场 当然。。。最近正在想深入了解 spring 。。。正好看到你的有关于 spring的 讲解。非常感谢 |
|
返回顶楼 | |
发表时间:2011-04-24
楼主你这说的是策略模式吧 和装饰没关系啊..
|
|
返回顶楼 | |
发表时间:2011-04-24
adri1 写道 楼主你这说的是策略模式吧 和装饰没关系啊.. 不是策略模式 策略是把 算法封装 这里 没有封装 其实这是这样的。。我描述的意思是把 color 或者size 这些形容词 分离出来 。。统一 实现一个 基类(这个就是 装饰者 父类 里面保存 apple这个 对象) 然后让 color size 或者未知的需求(比如 产地 品种) 这些 修饰者都实现这个 父类 可能是我 没有描述清楚。。不好意思啊。。。。 |
|
返回顶楼 | |
发表时间:2011-04-24
楼主的理解怪怪的。
|
|
返回顶楼 | |
发表时间:2011-04-24
楼主你描述的场景用策略模式没问题的...
至于装饰模式 还是看java.io吧 |
|
返回顶楼 | |
发表时间:2011-04-25
InputStream inputStream=new BufferedInputStream(new FileInputStream(new File("***")));
|
|
返回顶楼 | |
发表时间:2011-04-26
liuyupy 写道 InputStream inputStream=new BufferedInputStream(new FileInputStream(new File("***"))); 感谢这位仁兄 。。小弟已经看过 iO 了 包括NIO 。。。 随谈不上深入理解 但是理解装饰者 自认为还是 有这个实力的!!!多谢! |
|
返回顶楼 | |
发表时间:2011-05-10
这是装饰模式....我无语???
楼主还是要好好理解IO,我看你还是没有看懂。 建议看看JAVA IO一书,讲过滤流的那一张,再回来谈装饰模式吧 |
|
返回顶楼 | |