装饰图案隐藏了Decoratee的界面

时间:2016-03-14 12:30:21

标签: c# decorator

public interface IRender
{
  void Render();
}

public interface IUpdate
{
  void Update(float deltaTime);
}

我有实现IRender的类,其中一些也实现了IUpdate。 通过使用装饰器模式,我可以扩展他们的Render方法。

public abstract class Decorator: IRender
{
  protected IRender decoratee;

  public Decorator(IRender decoratee)
  {
    this.decoratee = decoratee;
  }

  public virtual Render()
  {
    decoratee.Render();
    // add custom rendering code here.
  }
}

这样做的好处是我可以通过将对象包装成多个装饰器(如babushka玩偶)来创建自定义渲染行为。

我的问题是,IUpdate接口以及decoratee实现的任何其他接口现在将被装饰器隐藏。我有许多系统接受对象列表,并根据它们实现的接口对它们进行操作。装饰类只会暴露IRender界面。

解决此问题的最简洁方法是什么?

0 个答案:

没有答案