我正在爲各種目標編寫一個跨平臺的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