所以,假设我在离散数学的世界里工作,我有一些函数
f: A x B x C -> D。
有了这个函数,我就可以进行像f(a,b,c) = d这样的计算。(我故意在这里含糊其辞)。
现在假设我想用一些现代的OO编程语言显式地实现这个计算。因此,我用a和c初始化了一个名为ClassA类的b等变量。然后呢?应该拥有哪个对象的计算?或者它可能是一个初始化器。它会是一个静态函数吗?
我本可以:
d = a.f_1(b,c),d = b.f_2(a,c),d = c.f_3(a,b),d = new ObjD(a,b,c),d = ZStatic.f_4(a,b,c)都是合理的选择,不是吗?
在这种情况下,对称应该要求我实现所有这些选项吗?
我倾向于完全避免构造函数方法,但除此之外,我不知道除了假定本质上是任意的信息之外,还可以取得什么进展。
那么,哪个对象应该拥有函数$f$ (如果有的话)?
发布于 2017-01-30 21:57:53
要给出最好的答案,重要的是要知道你使用的是哪种变量。
oop中一个非常重要的指标是实现高内聚性。衔接是一个模块的元素在多大程度上属于一个模块。如果变量a、b和c属于特定的上下文,那么最好将它们放在一个类中。如果它们在一个类中,您不应该担心,那么哪个类应该拥有计算(第四个解决方案)。
你的最后一个建议,使用静态函数也是可以想象的。这种方法经常用于不同语言的数学库(例如Java:数学课)。
https://stackoverflow.com/questions/41944034
复制相似问题