2011-12-13 57 views
0

这是一种方法论问题。当您编写使用面向对象库来抽象OpenGL等的软件时,您(或您)是否应该选择扩展OpenGL辅助对象并将自己的业务逻辑添加到它们上面,或者创建您的基本业务对象,然后将OpenGL助手作为它们的属性。编写3D图形软件时的类层次结构

例如

比方说,我有一个OpenGL库,它提供了一个类

OpenGLBillboard

其中提请面对摄像机

,如果我有某种业务的2D精灵将使用该类呈现的对象,单纯地扩展OpenGLBillboard并在其上构建它是明智的,还是我应该拥有一个OpenGLBillboard对象,该对象是一个基本上是基类的属性我的软件?

看起来在这种情况下继承可能是危险的,因为如果基类因需求而必须改变,重构可能会很痛苦......但是如果我只是走财产路线,我会多一点前期样板书写。

您的想法?

谢谢

P.S.原谅我说“商业对象”。我只是不想在一个关于3D的话题中说“模型”,并且让人们对我的意思感到困惑。

回答

0

就个人而言,我可能会让我的业务对象包含(私人)“Billboard”实例,而不是直接绑定到OpenGL。

业务对象只会被要求渲染,并通过Billboard实例重定向它的方法。这将允许您在不更改业务对象的情况下更换不同的实现(如果您决定使用Billboard以外的其他实现)或不同的后端(即:Direct3D渲染管道)。