我有一堂课“ 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()
的实现中检查是否同时设置了两个参数,并且答案是否为“是”-调用私有方法setArea(x*y)
。在此示例中,您必须在以下位置添加验证:builder.build();
看到x,y和area都已设置,如果没有,请引发IllegalStateException。
关于java - 复杂的构建器模式场景-Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24588775/