【发布时间】:2014-07-06 01:43:11
【问题描述】:
我有一个班级“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);
}
}
【问题讨论】:
-
我想我理解你的问题,但我不知道你发布的代码与构建器和调用构建器函数的顺序有什么关系。
-
感谢您的回复。我需要创建 6 个对象并且有 40 多行代码来执行此操作。所以我试图看看是否有一种更简洁的方法来构建对象,而不是在构造函数/单个过程中编写这 40 行。
-
您可以使用高度复杂的构建器设计强制执行顺序,例如包含返回
NotYetReaderBuilder的函数。只有最终函数返回实际的Builder对象。另一种方法是让普通构建器(例如Bloch Builder)中的函数接受多个参数。因此,如果第三步需要第二步的值,则将构建器函数设为itemsTwoAndThree(o2, o3)。不依赖他人的函数可以只是普通的独立函数(name("Humphrey"))。