我之前对装饰器模式的理解是,你继承Window
with ,然后在被覆盖的方法中,在调用' 实现上述方法WindowDecorator
之前做一些额外的工作。Window
类似于以下内容:
public class Window
{
public virtual void Open()
{
// Open the window
}
}
public class LockableWindow : Window // Decorator
{
public virtual void Open()
{
// Unlock the window
base.Open();
}
}
然而,这本质上是对装饰进行硬编码,那么如何将其重构为使用组合而不是继承呢?