这是一个方法论问题。
在编写利用面向对象的库来抽象OpenGL等内容的软件时,您是否(或是否愿意)选择扩展OpenGL帮助程序对象并在其中添加您自己的业务逻辑,或者创建基本的业务对象,然后将OpenGL帮助程序作为它们的属性。
例如
假设我有一个OpenGL库,它提供了一个类
OpenGLBillboard
它绘制了一个面对相机的2D精灵
如果我有某种将使用该类呈现的业务对象,那么简单地扩展OpenGLBillboard并在其基础上构建是明智的做法,还是应该只有一个OpenGLBillboard对象,它是软件中本质上是基类的属性?
在这种情况下,继承看起来可能是危险的,因为如果基类由于需求而发生变化,重构可能会很痛苦……然而,如果我只是走属性路线,我有更多的前期样板要写。
你的想法是什么?
谢谢
另外,请原谅我说“业务对象”。我只是不想在关于3D的话题中说太多“模型”,让人们对我的意思感到困惑。
发布于 2011-12-14 04:33:18
就我个人而言,我可能会让我的业务对象(私下)包含一个"Billboard“实例,而不是将它直接绑定到OpenGL。
业务对象将被要求呈现,并通过Billboard实例重定向它的方法。这将允许您换出不同的实现(如果您决定使用不同于公告牌的实现)或不同的后端(即: Direct3D呈现管道),而根本不需要更改业务对象。
https://stackoverflow.com/questions/8495708
复制相似问题