Design patterns 建设者模式如何在it中使用singleton';什么是工具?
我遇到了几个关于作为单例实现的构建器模式的引用: 摘自:“抽象工厂、构建器和原型可以在其实现中使用单例”Design patterns 建设者模式如何在it中使用singleton';什么是工具?,design-patterns,singleton,builder,Design Patterns,Singleton,Builder,我遇到了几个关于作为单例实现的构建器模式的引用: 摘自:“抽象工厂、构建器和原型可以在其实现中使用单例” 构建器模式如何实现单例?当多个线程调用一个构建器时,如何维护由buildParts()创建的状态?我认为构建器不应该是单体的 如果你真的想,我想你可以这样做: public final class Builder{ private static final Builder instance = new Builder(); private Part part1= null;
构建器模式如何实现单例?当多个线程调用一个构建器时,如何维护由
buildParts()
创建的状态?我认为构建器不应该是单体的
如果你真的想,我想你可以这样做:
public final class Builder{
private static final Builder instance = new Builder();
private Part part1= null;
private Part part2= null;
...
public static Builder getInstance() {
return instance;
}
private Builder() { /*singleton */ }
public Builder buildPart1(Part p){
part1 = p;
return this;
}
...build other parts similar;
Product getResult(){
return new ConcreteProduct(part1, part2 ...);
}
}
但是,通过重新使用同一个单例实例,您必须确保正确设置了所有值,并且不会意外地重新使用以前构建的产品中的旧值
即使进行了适当的同步,我认为从其他线程/以前构建的生产值泄漏到您的产品中可能出现的bug和意外情况也不值得这么做。我认为构建器不应该是单例的 如果你真的想,我想你可以这样做:
public final class Builder{
private static final Builder instance = new Builder();
private Part part1= null;
private Part part2= null;
...
public static Builder getInstance() {
return instance;
}
private Builder() { /*singleton */ }
public Builder buildPart1(Part p){
part1 = p;
return this;
}
...build other parts similar;
Product getResult(){
return new ConcreteProduct(part1, part2 ...);
}
}
但是,通过重新使用同一个单例实例,您必须确保正确设置了所有值,并且不会意外地重新使用以前构建的产品中的旧值
即使进行了适当的同步,我认为从其他线程/以前构建的生产值泄漏到您的产品中可能出现的bug和意外情况也不值得这么做。我同意,我认为不应该是单例。此外,我想不出一种方法来实现它,并且仍然是安全的。我同意,我不认为它应该是单例的。此外,我想不出一个方法来实现它,但仍然是安全的。