制作单独的构造函数和 init 方法,还是创建带有参数的构造函数更好?

Ame*_*kic 2 java constructor initialization

正如问题所述,创建这样的构造函数和初始值设定项是否更好(伪代码):

public Component()  
{
    this.arrayList = new ArrayList<String>();
}

public void initialize()  
{  
    this.value = parse(this.xml);
    arrayList.add(value);
}
Run Code Online (Sandbox Code Playgroud)

在我的情况下,初始化必须从 xml 文档中读取并解析值。该类还会有许多其他成员,这些成员将使用单独的、更复杂的方法进行初始化。在这种情况下,最佳做法是什么?

Joo*_*gen 5

有用于复杂初始化的构建器模式。

X x = X.create()
    .setA(4)
    .setB("b")
    .end();

class X {
    private X() { }

    public static XBuilder create() {
    }

    public static class XBuilder {
        private X x;

        X end() {
            return x;
        }

        XBuilder setA(int a) {
            x.setA(a);
            return this;
        }
        XBuilder setB(String b) {
            x.setB(b);
            return this;
        }
    }
Run Code Online (Sandbox Code Playgroud)

它使用流畅的接口、链式调用,可用于检查完整的初始化,在end().

  • `结束()`?我会称它为`build()`。通常,我在私有构造函数中添加所需的参数(以使类工作),然后使用 set 方法应用所有辅助参数。当我可以使它工作时,我喜欢这种模式。通常从来没有那么多参数,但它会不时出现。 (2认同)