我有一堂课“ 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/

10-10 19:22