2011-12-13 57 views
0

這是一種方法論問題。當您編寫使用面向對象庫來抽象OpenGL等的軟件時,您(或您)是否應該選擇擴展OpenGL輔助對象並將自己的業務邏輯添加到它們上面,或者創建您的基本業務對象,然後將OpenGL助手作爲它們的屬性。編寫3D圖形軟件時的類層次結構

例如

比方說,我有一個OpenGL庫,它提供了一個類

OpenGLBillboard

其中提請面對攝像機

,如果我有某種業務的2D精靈將使用該類呈現的對象,單純地擴展OpenGLBillboard並在其上構建它是明智的,還是我應該擁有一個OpenGLBillboard對象,該對象是一個基本上是基類的屬性我的軟件?

看起來在這種情況下繼承可能是危險的,因爲如果基類因需求而必須改變,重構可能會很痛苦......但是如果我只是走財產路線,我會多一點前期樣板書寫。

您的想法?

謝謝

P.S.原諒我說「商業對象」。我只是不想在一個關於3D的話題中說「模型」,並且讓人們對我的意思感到困惑。

回答

0

就個人而言,我可能會讓我的業務對象包含(私人)「Billboard」實例,而不是直接綁定到OpenGL。

業務對象只會被要求渲染,並通過Billboard實例重定向它的方法。這將允許您在不更改業務對象的情況下更換不同的實現(如果您決定使用Billboard以外的其他實現)或不同的後端(即:Direct3D渲染管道)。