3

首先我使用的是java,即使它可能是任何语言的问题

假设我有一个复杂的系统,现在有时我最终会构建对象(设置所有参数),然后将其传递给“目标层”(管理器),它会打开对象(获取参数)。

如果我要在一个函数中传递所有参数,那将被认为是糟糕的设计,因为假设每个函数都有少量参数

这似乎是一种浪费,过去我也决定将参数直接设置为“目标层”

是否有处理此问题的设计模式?或者该主题的书籍或专家推荐的东西?

4

4 回答 4

3

您可能会看一下 Effective Java Book,它将仔细介绍设计方法签名

将有三种技术用于缩短长参数:

  • 将方法分解为多个方法,每个方法只需要参数的一个子集
  • 创建辅助类来保存一组参数(通常是静态成员类)
  • 将 Builder 模式从对象构造调整为方法调用

既然你在问参考,我希望它可以帮助你解决问题,别忘了在这里买这本书

于 2013-10-09T09:23:39.777 回答
1

既然你问的是书籍参考,这里有一篇来自Clean Code第 3 章:函数

当一个函数似乎需要两个或三个以上的参数时,很可能其中一些参数应该被包装到它们自己的类中。[...]

通过创建对象来减少参数的数量可能看起来像是作弊,但事实并非如此。当变量组一起传递时,[...] 它们很可能是一个值得拥有自己名称的概念的一部分。

所以我想将很多方法参数分组到类中是可以的,只要这些类代表一些连贯的概念。

就我个人而言,如果我做这样的事情,我喜欢包装类是不可变的,并由专门的构建器创建。这将额外类的数量增加了两倍(包装器和构建器),但可以将这样的类视为一个原子参数。

于 2013-10-09T09:30:02.637 回答
1

将参数提取到它自己的“Parameter-Object”(模式名称)中并将该对象传递给函数。如果 Parameter-Object 本身构造复杂,则使用 Builder-Pattern,如果可以以不同的方式构造对象,则可以简化构造。

例如:

function(param1, param2, param3, ...)

然后将参数提取到一个对象中:

class ParamObject {
  param1;
  param2;
  param3;
}

及其相应的 setter 和 getter。

要构造 ParamObject ,请使用BuilderPattern

最后,调用将如下所示:

function(paramobject):

在函数内部,然后从对象中检索以前的参数。正如 siledh 所说:确保将参数分组到具有共同概念的类中,这意味着可以从参数列表中创建多个类。

于 2013-10-09T09:41:02.993 回答
0

对我来说,这听起来像是一个数据传输对象。

http://martinfowler.com/eaaCatalog/dataTransferObject.html

于 2013-10-09T09:24:57.327 回答