我正在建立一个基于约书亚建设者模式的建设者.我的问题是如何让它成为单身人士?详细阐述我的观点,如果我有下面的建设者
public class Widget {
public static class Builder {
private String name;
public Builder( String name) {
this.name = name;
}
public Widget build() {
Widget result = new Widget(this);
return result;
}
public Builder model( String value ) {
this.model = value;
return this;
}
}
private final String name;
private Widget( Builder b ) {
this.name = b.name;
}
// ... etc. ...
}
Run Code Online (Sandbox Code Playgroud)
我会从另一个类中调用此构建器,如新的Widget.Builder().name("abc").build()........
但是如果我只想要这个Widget的一个实例,或者我需要从多个地方访问这个Widget而不需要每次都创建一个新的Widget.理想情况下,我想将实例化限制在Widget类中.有什么想法吗?
恕我直言,单身人士和构建器模式似乎并不在一起:如果只有一个实例可以构建,为什么还需要一个构建器?
如果你需要重用一个Builder对象,因为你想多次构建一个类似的对象,你可以简单地保持对该Builder的引用,并根据需要多次使用它(因为你将它设置为静态):
Widget.Builder builder = new Widget.Builder("abc").model("def");
Run Code Online (Sandbox Code Playgroud)
然后你可以创建几个小部件:
Widget w1 = builder.build();
Widget w2 = builder.build();
...
Run Code Online (Sandbox Code Playgroud)