简述
运行时,为原对象拓展新的行为。
相较于传统的继承来拓展新的行为,装饰器模式更为的灵活多变,当然实现起来也更为复杂。
话不多说,看个优化案例吧。
优化案例
最初版v0
现有系统中有设定窗口Style的模块,现在想增加一个圆角的样式。以下是现有模块的代码。
class Style { public void style() {
System.out.println("设置Order");
}}
第一种传统的修改方式。
class Style {
public void style() {
System.out.println("设置Order");
System.out.println("设置Radius");
}}
虽然代码简单,但细想一下,如果我们日后仍然需要单独设置Order的样式怎么办。现在的代码实现已经无法满足了不是?
为此,我们可能会想到另一种方案。使用继承。
class BaseStyle {
public void style() {
System.out.println("设置Order");
}}class Radius extends BaseStyle {
public void style() {
super.style();
System.out.println("设置Radius");
}}
确实,如果不在意类的命名的话,目前来