在构造函数中传递参数的最佳方法

bNd*_*bNd 8 java design-patterns

我有一个在表格布局中创建行的类.行创建取决于数据和元数据.正如所以我创建的元数据属性作为静态和使用初始化一次元数据是相同像显示/隐藏可见属性,每一行等initWidgetRowWidget.

只是示例:

class RowWidget extends FlexTable{

  public static void initWidget(Form form,
    HashMap<Long, ContractorPermissionEnum> formModePermissionMap,
    GridMode gridMode,
    boolean isApplied,
    boolean isChildExist,
    boolean isChildAttachment)
    { 
      // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我为每个记录数据调用下面的构造函数.

public RowWidget(DataRawType dataRawType, Data data, Data parentData) {
 // ...
}
Run Code Online (Sandbox Code Playgroud)

我认为这不是正确的方法.因为作为模式,任何人看到这个类,然后理解它将创建一行.我最初不想打电话initWidget.我想只在构造函数中传递每个必需参数

public RowWidget(DataRawType dataRawType,
  Data data,
  Data parentData,
  Form form,
  HashMap<Long, ContractorPermissionEnum> formModePermissionMap,
  GridMode gridMode,
  boolean isApplied,
  boolean isChildExist,
  boolean isChildAttachment) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

但由于这个原因,构造函数没有任何参数.我认为在构造函数中有5+参数也是不好的模式.

有人建议我:

  • 如何在另一个实例中构造具有相同属性的类?

注意:我知道这可以仅通过静态但不想使用静态.

  • 对所有实例都有一些默认修复属性来构造类的最佳方法是什么?

注意:我不想创建另一个类来实现它.或任何getter/setter方法.

提前致谢.

R K*_*een 0

为什么不创建一个方法,该方法将接受要更改的属性的 newValues 并返回类的新实例,其中所有其他属性都是从调用此方法的实例复制的。