设计模式替换具有多个参数的方法

Ton*_*ony 5 java design-patterns builder

爪哇1.6

我有一个带有许多参数的方法。这不是构造函数,而是普通方法。

 class A {
   public void m (int a, int b, boolean c, List<>...) { }
 }
Run Code Online (Sandbox Code Playgroud)

如何将一种方法替换为更好的形式?据我了解,Builder设计模式是为构造者设计的。

Ily*_*kin 6

如果我遇到一个参数太多的方法,我通常会执行以下步骤:

  1. 我尝试识别与这些参数相关的实体,并检查是否可以使用保留整个对象重构。

    您从一个对象获取多个值,并将这些值作为方法调用中的参数传递。改为发送整个对象。

  2. 如果所有这些参数都是独立的,并且我想增加参数数量,我会使用另一种常见的解决方案 -引入参数对象重构。

    您有一组自然组合在一起的参数。用一个对象替换它们。

    为了构建object可以使用其他技术和模式(例如构建器、方法链、Fluent 接口)。


Mar*_*val 2

您对 Builder 的看法是正确的,取决于这些参数是否是强制性的。

我个人会从http://en.wikipedia.org/wiki/Single_responsibility_principle开始,因为具有许多参数的方法(以及构造函数或类)有味道。我的意思是,这些参数相关吗?方法逻辑相关吗?这有什么意义吗?

如果这些参数有某种关系,它们就可以适合某种领域实体。