首先我使用的是java,即使它可能是任何语言的问题
假设我有一个复杂的系统,现在有时我最终会构建对象(设置所有参数),然后将其传递给“目标层”(管理器),它会打开对象(获取参数)。
如果我要在一个函数中传递所有参数,那将被认为是糟糕的设计,因为假设每个函数都有少量参数
这似乎是一种浪费,过去我也决定将参数直接设置为“目标层”
是否有处理此问题的设计模式?或者该主题的书籍或专家推荐的东西?
首先我使用的是java,即使它可能是任何语言的问题
假设我有一个复杂的系统,现在有时我最终会构建对象(设置所有参数),然后将其传递给“目标层”(管理器),它会打开对象(获取参数)。
如果我要在一个函数中传递所有参数,那将被认为是糟糕的设计,因为假设每个函数都有少量参数
这似乎是一种浪费,过去我也决定将参数直接设置为“目标层”
是否有处理此问题的设计模式?或者该主题的书籍或专家推荐的东西?
您可能会看一下 Effective Java Book,它将仔细介绍设计方法签名
将有三种技术用于缩短长参数:
既然你在问参考,我希望它可以帮助你解决问题,别忘了在这里买这本书
既然你问的是书籍参考,这里有一篇来自Clean Code第 3 章:函数:
当一个函数似乎需要两个或三个以上的参数时,很可能其中一些参数应该被包装到它们自己的类中。[...]
通过创建对象来减少参数的数量可能看起来像是作弊,但事实并非如此。当变量组一起传递时,[...] 它们很可能是一个值得拥有自己名称的概念的一部分。
所以我想将很多方法参数分组到类中是可以的,只要这些类代表一些连贯的概念。
就我个人而言,如果我做这样的事情,我喜欢包装类是不可变的,并由专门的构建器创建。这将额外类的数量增加了两倍(包装器和构建器),但可以将这样的类视为一个原子参数。
将参数提取到它自己的“Parameter-Object”(模式名称)中并将该对象传递给函数。如果 Parameter-Object 本身构造复杂,则使用 Builder-Pattern,如果可以以不同的方式构造对象,则可以简化构造。
例如:
function(param1, param2, param3, ...)
然后将参数提取到一个对象中:
class ParamObject {
param1;
param2;
param3;
}
及其相应的 setter 和 getter。
要构造 ParamObject ,请使用BuilderPattern。
最后,调用将如下所示:
function(paramobject):
在函数内部,然后从对象中检索以前的参数。正如 siledh 所说:确保将参数分组到具有共同概念的类中,这意味着可以从参数列表中创建多个类。
对我来说,这听起来像是一个数据传输对象。