1
假设我有一个具有一些成员属性的类A, A也有一个带有B类对象的向量(std::vector<B>
)。那些B对象需要一些属性(比如说5)。我看到了两种处理方法:C++类的设计:在其他类成员中共同使用类成员;小界面vs小班
1)让B引用这些属性,并在B的构造函数中赋值它们。
2)让B只有一个对象的引用,并通过公共getAttributeXYZ()
函数获取属性。
我可以看到解决方案1)技术上对A的了解较少,因此它更好,因为它不能调用某个错误的函数。但我觉得2)更清晰,因为构造函数更小,B类本身具有更少的(引用)属性。有一个更好的方法,还是取决于细节?
上下文:在我的程序中,A的那些成员是可以由所有B对象共享的用于纹理管理,文本绘制等的类。
我不遵循#1对A的了解程度的逻辑。如果它直接引用属性,它仍然依赖于A.事实上,它更是如此,因为它依赖于* private *实现A的细节,而如果你只是存储了一个对A的引用并且调用了public accessor函数,那么A和B之间的依赖关系就会减少。我还会争辩说,试图最小化两个*逻辑上依赖的事物之间的依赖关系是一个练习在愚蠢。使用最清晰的设计,即使它不是理论上最纯的设计。 –
“有没有更好的方法还是取决于细节?”:我们如何知道细节而不知道? :)这就是为什么一个好问题应该被合成为[MCVE](http://stackoverflow.com/help/mcve),而不是一个普遍的问题 – wasthishelpful