看完装饰设计模式~~~始终不明不白
看了一下人家博客的介绍,在以下情况下应当使用装饰模式: 1。需要扩展一个类的功能,或给一个类增加附加责任。 2。需要动态地给一个对象增加功能,这些功能可以再动态地撤销。 3。需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变得不现实。有3个问题不是很清楚~~`
1。“1”和“2”给我的感觉是~~类的某个对象需要添加额外的逻辑,在Main方法中使用时直接添加需要的逻辑不便于维护,用子类来实现又有点多余。不知道这样理解对吗?2。现在写的代码还很少不能明白“3”当中的含义~~望大家指点一下.3。为什么装饰类与被装饰类都要继承同一个接口或抽象类(Component),不继承它不是同样能达到目的吗?
看了一下人家博客的介绍,在以下情况下应当使用装饰模式: 1。需要扩展一个类的功能,或给一个类增加附加责任。 2。需要动态地给一个对象增加功能,这些功能可以再动态地撤销。 3。需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变得不现实。有3个问题不是很清楚~~`
1。“1”和“2”给我的感觉是~~类的某个对象需要添加额外的逻辑,在Main方法中使用时直接添加需要的逻辑不便于维护,用子类来实现又有点多余。不知道这样理解对吗?2。现在写的代码还很少不能明白“3”当中的含义~~望大家指点一下.3。为什么装饰类与被装饰类都要继承同一个接口或抽象类(Component),不继承它不是同样能达到目的吗?
装饰模式的一个通俗例子是tooltip控件,当你往窗体上拖放一个tooltip(帮助提示)控件时,窗体中的每一个控件都会多出几个tooltip属性来,
就是你说的 :1。需要扩展一个类的功能,或给一个类增加附加责任。
由于tooltip可以删除,所以:2。需要动态地给一个对象增加功能,这些功能可以再动态地撤销。
有时候可以通过子类继承的方式来实现扩展,但没有装饰来的优雅即:3。需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变得不现实。
初学者才会千方百计想着套用设计模式。
看完设计模式,《重构》也是必修课。
成熟的OOP只有需要时以OOAD原则为基础重构到模式