我有一个类(class)“MyClass”。 MyClass 的对象创建很复杂,因为它有 6 个步骤,其中一些步骤依赖于前面的步骤。对于这种情况,构建器模式是一个很好的用例吗?如果是,我该怎么做?请指教。
如果问题不清楚并且您需要更多输入,请回复。
代码(我已将示例代码中的步骤减少到 3 个,实际上我有 6 个步骤,其中一些步骤依赖于之前的步骤,总共有 40 行代码。所以我试图看看是否可以以更简洁的方式构建对象)。
public class MyClass{
private SomeObject3 obj3;
private SomeObject1 obj1;
public MyClass(ParamObject param)
{
obj1 = new SomeObject1(param);
SomeObject2 obj2 = new SomeObject2(obj1);
obj3 = new SomeObject3(obj2);
}
}
最佳答案
构建器模式不一定是您所需要的,因为它无法强制执行“顺序”。
例如:
builder.setX(x)
.setY(y)
.setDepth(p);
builder.build();
应该相当于:
builder.setY(y)
.setArea(p)
.setX(x);
builder.build();
也就是说,您可以“隐藏”构建器中的步骤,例如,仅执行以下操作:
builder.setX(x)
.setY(y)
builder.build();
并在 setX()
和 setY()
的实现中检查两个参数是否都已设置,如果答案为"is",则调用私有(private)方法 setArea(x*y)
。在此示例中,您必须在以下位置添加验证:
构建器.build();
查看 x、y 和面积是否全部设置,如果没有设置,则引发 IllegalStateException。
关于java - 复杂构建器模式场景 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24588775/