方法修改参数时的推荐模式

  • 本文关键字:模式 修改 参数 方法 oop
  • 更新时间 :
  • 英文 :


假设我正在创建一个名为SomeLibrary的类。这个类有一个Calculate方法,它接受一个参数——SomeClass的一个实例。

class SomeLibrary 
{
void Calculate(SomeClass argument) 
{
//Some algorithm...
//argument's value is changed!
argument.value = 3;
}
}

Calculate的结果是一个经过修改的SomeClass。如何通知用户?我看到两个解决方案:

  1. 返回SomeClass而不是void-在这种情况下,参数仍在修改中,但这次它也被返回。不利的一面是,用户可能不希望参数被修改,也许他需要在修改之前保留它的版本
  2. 在Calculate中,可以对参数进行深入复制,并返回此参数。然而,创建深度副本并不总是一项简单的任务

你怎么看?

如果你愿意接受OOP,你需要与突变共存。也就是说,你给出了一个东西的例子,通常人们会认为它会发生变异。这没有问题。

除非你自己的医生说相反的话,否则突变是可以的。否则,您可能需要查看"自动映射器"。

最新更新