【发布时间】:2012-04-10 16:15:13
【问题描述】:
我目前正在使用 Builder 模式,密切关注 Wikipedia 文章 Builder 模式 http://en.wikipedia.org/wiki/Builder_pattern
中建议的 Java 实现这是说明我的实现的示例代码
public class MyPrimitiveObject {
private String identifier="unknown";
public static class Builder {
private final MyPrimitiveObject obj = new MyPrimitiveObject();
public MyPrimitiveObject build() { return obj; }
public Builder setidentifier (String val) {
obj.identifier = val;
return this;
}
}
public static Builder createBuilder() { return new Builder(); }
@Override public String toString() { return "ID: "+identifier; }
}
在我的一些使用这个类的应用程序中,我碰巧发现了非常相似的构建代码,所以我想在MySophisticatedObject 中继承MyPrimitiveObject 并将我所有重复的代码移到它的构造函数中......这就是问题所在.
如何调用超类 Builder 并将其返回的对象分配为我的实例?
public class MySophisticatedObject extends MyPrimitiveObject {
private String description;
public MySophisticatedObject (String someDescription) {
// this should be the returned object from build() !!
Builder().setidentifier(generateUUID()).build()
description = someDescription;
}
}
【问题讨论】:
-
这里是你如何做到这一点的详细版本:weblogs.java.net/node/642849 - 我通常使用静态工厂方法
-
@assylias,谢谢;我在发布之前已经找到了它,但这并不能回答我的问题。并不是我想为我的子类创建子类并发布一个新的 Builder,我只是想在我的构造函数中使用已经存在的超类构建器。有可能吗?
-
我看错了你的问题。