【发布时间】:2013-12-06 15:43:40
【问题描述】:
我刚开始学习装饰器模式,我很困惑什么时候可以使用装饰器模式,或者为什么它与不使用指向超类的指针调用 super 不同。
"...是一种设计模式,允许将行为添加到单个对象,无论是静态的还是动态的,而不影响同一类中其他对象的行为。"
这和只是子类化不一样还是我错过了什么?
public class Foo {
protected void doSomething() { }
}
//using decorator pattern
public class Bar extends Foo {
private foo;
public Bar(Foo foo) {
this.foo = foo;
}
public void doSomething() {
foo.doSomething();
// extra code
}
}
//using super
public class Bar extends Foo {
@Overide
public void doSomething() {
super.doSomething();
// extra code
}
}
【问题讨论】: