2011-04-18 80 views
4

一个类实现了一个计算某个值的公共函数。在计算过程中,该函数会创建我也想要检索的临时数据。这应该是班级成员吗?

我可以添加一个类成员,该成员存储我可以在函数完成后得到的数据,也可以为该函数提供另一个参数,以便被调用者必须处理它。所以基本上

class A { 
    TempData member; 
    ... 
    public Output function(Input input) { 
     // calculate return value and save temp data to member 
    } 
} 

class B { 
    ... 
    public Output function(Input input, TempData fillme) { 
     // calculate return value and save temp data to fillme 
    } 
} 

我的问题:两个版本看我错了。临时数据并不真正属于A类,并且B类中带有附加参数的功能,我不知道...

是否有另一种解决方案?如果不是,你会选择哪一个,为什么?

+0

计算和临时数据之间是否存在1-1关系? – 2011-04-18 19:26:57

回答

10

听起来好像你正在努力解决多输出功能问题。最好的解决方案是创建一个单独的类,它表示此函数的返回值并保存您的Output和TempData对象。然后你可以干净地返回这个类的一个实例。

+0

是的,你的方法应该返回一个'Output',它会聚合'TempData'类成员 – 2011-04-18 19:28:55

+0

听起来不错,谢谢! – javabeginner14 2011-04-18 19:44:58

0

从这个角度讲,如果不是不可能的话,这确实很难。你应该问自己什么是对象。

那么“TempData”是否属于A类的某些功能?如果你有一个对象A,你会期望它能够告诉你什么是“TempData”?那么它应该有一个成员。这可能与OO设计有关,并且与您目前的情况有关,特别是对于名为'A'的类别

+0

这是我的主要问题:我不希望对象A有我的临时数据。对我来说,它只是计算该函数返回值的一个有趣的副产品。 – javabeginner14 2011-04-18 19:40:08