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界面。
解决此问题的最简洁方法是什么?