是否传递一个聚合对象,而不是对象的一个​​长参数列表的降低数据耦合(Does passing an

2019-10-19 08:03发布

我读可以通过“未通过不必要参数”被减少的数据耦合

说有一个makeCake这需要在许多实例变量的方法Ingredients类作为参数:

 makeCake(ingredients.flour, ingredients.egg, ingredients.sugar, ingredients.cheese, ingredients.cream)

取而代之的这一点,只是通过整个配料对象

 makeCake(ingredients)

并访问内部的变量makeCake方法..


这被计为减少它调用类makeCake方法和配料类间的耦合? 之前你传递5个参数,现在你只传一个?

(请注意,这个问题是用Java语言做 - 和Scala的OO侧 - 记)

(抱歉,如果这个问题是让你渴望的蛋糕,它是突然出现在我的脑海的第一件事):)

Answer 1:

看到http://depfind.sourceforge.net/Manual.html#Dependencies :

...的依赖是当一种元素的运作需要其他元素B的存在,我们说A 依赖于B,我们写:

 A --> B 

我们说有一个对外的依赖,而B有一个入站的依赖。 这是相同的依赖,但无论是入站或出站是相对于你如何看待它。 我们也说,A是依赖和B是可靠的

依赖图包括用于一起使用两种类型的关系链接的软件工件节点。

文物是包,类和功能。 我们使用术语功能来指定类的属性,构造函数和方法; 我们会从这里上对待他们一样。 为了分析依赖的目的,我们不不同类型的功能区分,无论是构造或常规方法,也不管该功能的特点,如被标记为final或static。

第一种类型的关系的是组合物 。 包上课,这本身具有的特点。 我们称这种“有”关系组成 。 特征节点被链接到通过组合物其类节点。 一类节点也连接到通过其组合物包节点。

所述第二类型的关系是相关性 。 类相互引用,功能相互引用和功能指向类。 我们把这种关系的依赖 。 每个节点被连接到使用依赖链路中不同类型的各种其他节点。



Answer 2:

我认为没有这么多。

我觉得在格式的变化不是想法。

相反,如果你通过一个“的成分标识”,让目标查找它需要的东西....这会减少耦合的。



文章来源: Does passing an aggregate object instead of a long argument list of objects reduce data coupling