java-Joshua Bloch Builder模式-考虑线程安全时的好主意?
作者:互联网
我正在考虑使用Joshua Bloch提到的here所描述的构建器模式.
我有一个显示警报消息的类,该类将被许多应用程序使用.
它可以具有很多不同的选项,例如line1,btn txt,title,line2,timeout等.
我喜欢用setter链接对象构造的想法,但实际上,构造之后,应用程序要做的就是显示此警报.
由于创建的对象是不可变的,因此他们将不得不为不同的场景创建多个对象.
显示这些警报的所有调用都是异步的.
这种模式是一个好主意还是最好在类中仅包含静态方法,使其保持无状态并在方法本身中获取所有参数.
解决方法:
您链接的文章提到了它.构建器模式的用例之一是创建一个复杂的不可变对象.您不希望为其编写大型构造函数,因为参数太多了.
尽管构建器是可变的,并且具有类似于Bean的setter-因此不是线程安全的-构建的结果对象是.没有可变状态的对象可以在任意多个线程之间共享.没有什么可以修改它们,因此没有什么可以读取不一致的状态.
->如果您不跨线程共享构建器,那么生成的对象就是线程安全的.最终对象的线程安全性完全独立于您创建对象的方式.
Is this pattern a good idea or is better to just have static methods in the class, keep it stateless and take all the parameters in the method itself.
取决于对象创建的复杂程度.无状态总是好的,但是只有静态方法,您将如何为警报传递某种配置?必须在某处显示某些状态.
标签:builder,thread-safety,java,user-interface,design-patterns 来源: https://codeday.me/bug/20191122/2058122.html