我正在为各种目标编写一个跨平台的UI工具包,其中一些已经嵌入。有些平台支持“保留”渲染模式,其中一些更是“立竿见影”,所以我想,我的视觉效果,我有两棵树 - 伪代码:C++抽象用户界面设计
abstract class Visual
{
Visual(Widget widget) { this.widget = widget; }
}
abstract class RetainedVisual : Visual
{
abstract void Setup(Renderer r);
abstract void Teardown(Renderer r);
}
abstract class ImmediateVisual : Visual
{
abstract void Paint(Renderer r);
}
到目前为止好。但现在我也有ContainerVisual
类编码小部件层次:
abstract class ContainerVisual : Visual
{
void AddChild(Visual child) {}
}
哪种类型的力量我到具有ImmediateContainerVisual
和RetainedContainerVisual
类这是开始显得臃肿。更好的设计理念?
因此词“伪”,约阿希姆。最终设计必须在C++中实现(所以:没有反射或其他狡猾的东西)。 – 2013-03-19 09:47:45
_retained_是否意味着缓冲?此外,您还没有说过RetainedVisual和ImmediateVisual之间的功能差异是什么,或者它们有什么共同之处(它们共享一个基类,但显然没有虚拟方法或数据)。 – Useless 2013-03-19 10:20:51
“保留”意味着您将图形提交到上下文,然后忘记它们(直到发生变化)。所以“安装程序”将图形一次推入渲染器。和“拆解”将其删除。 “立即”意味着您不断在渲染器中每帧一次地绘制图形。你不需要使东西无效,因为它通常都会被重绘。 – 2013-03-19 11:12:46