单身人士和建造者(约书亚的方式)

Jav*_*ava 3 java builder

我正在建立一个基于约书亚建设者模式的建设者.我的问题是如何让它成为单身人士?详细阐述我的观点,如果我有下面的建设者

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类中.有什么想法吗?

ass*_*ias 7

恕我直言,单身人士和构建器模式似乎并不在一起:如果只有一个实例可以构建,为什么还需要一个构建器?

如果你需要重用一个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)