对一组对象的功能进行增强时,就可以使用该模式进行问题的解决.
装饰和继承
共同点:都能实现一样的特点:进行功能的扩展增加:
区别:
首先有一个继承体系:
Writer
TextWriter
MediaWriter
想要对操作的动作进行效率的提高.
按照面向对象的思想,可以通过继承对具体的进出境行功能的扩展.
效率提高需要加入缓冲技术.
Writer
TextWriter
BufferTextWriter加入了缓冲技术的操作技术的操作文本对象的对象.
MediaWriter
BufferTextWriter
对体系进行功能扩展,为了提高效率,也要产生子类.
这样导致继承体系越来越臃肿.不够灵活.
对以上出现的问题,加入了同一种技术--缓冲
前一种是让缓冲和具体的对象相结合.
可以将缓冲进行单独的封装.哪个对象需要缓冲就将哪个对象和缓冲关联.
装饰类比继承灵活.
特点:装饰类和被装饰类都必须所属同一个接口或者父类.
开发步骤:
1,写一个类继承被装饰类
2,写一个实例变量,记录被装饰类
3, 通过构造方法,为被装饰类设置值
*难点:4,重写不能满足业务的方法
使用设计模式的情况:
当一个类的某个方法不能满足业务需求情况下,该类又是一个非final类时,可以进行重写
装饰和继承
共同点:都能实现一样的特点:进行功能的扩展增加:
区别:
首先有一个继承体系:
Writer
TextWriter
MediaWriter
想要对操作的动作进行效率的提高.
按照面向对象的思想,可以通过继承对具体的进出境行功能的扩展.
效率提高需要加入缓冲技术.
Writer
TextWriter
BufferTextWriter加入了缓冲技术的操作技术的操作文本对象的对象.
MediaWriter
BufferTextWriter
对体系进行功能扩展,为了提高效率,也要产生子类.
这样导致继承体系越来越臃肿.不够灵活.
对以上出现的问题,加入了同一种技术--缓冲
前一种是让缓冲和具体的对象相结合.
可以将缓冲进行单独的封装.哪个对象需要缓冲就将哪个对象和缓冲关联.
装饰类比继承灵活.
特点:装饰类和被装饰类都必须所属同一个接口或者父类.
开发步骤:
1,写一个类继承被装饰类
2,写一个实例变量,记录被装饰类
3, 通过构造方法,为被装饰类设置值
*难点:4,重写不能满足业务的方法
使用设计模式的情况:
当一个类的某个方法不能满足业务需求情况下,该类又是一个非final类时,可以进行重写