Java 装饰设计模式

来源:互联网 发布:linux vi recording 编辑:程序博客网 时间:2024/05/21 06:01

装饰设计模式:

对一组对象的功能进行增强时,就可以用该模式进行问题的解决


装饰和继承都能实现一样的特点:进行功能的扩展增强


有什么区别呢?


首先有一个继承体系

Writer

|----TextWriter:用于操作文本

|----MediaWriter:用于操作媒体

想要对操作的动作进行效率的提高

按照面向对象,可以通过继承对具体对象 进行功能的扩展

Writer

|----TextWriter:用于操作文本

|---BufferTextWriter:加入了缓冲技术的操作文本的流对象

|----MediaWriter:用于操作媒体

|---BufferMediaWriter:加入了缓冲技术的操作媒体的流对象

到这里就结束了  但是这样做好像并不理想

如果这个体系进行功能扩展 又多了流对象

那么这个流要提高效率 是不是也要产生子类呢 是 这时就会发现 只为提高功能进行的继承 

导致继承体系越来越臃肿。 不够灵活


重新思考这个问题

既然加入的都是同一种技术--缓冲

前一种是让缓冲和具体的对象相结合 

可不可以将缓冲进行单独的封装 哪个对象需要缓冲 就将哪个对象 和缓冲关联


class BufferWriter extends Writer{

Buffer(Writer w){

}

}

Writer

|----TextWriter:用于操作文本

|----MediaWriter:用于操作媒体

|----BufferWriter 用于提高效率

装饰比继承更为灵活。不需要产生关系


特点:装饰类和被装饰类都必须所属与同一个接口或者父类


原创粉丝点击