美文网首页
Effective Java重点笔记--第二条 遇到构造器具有多

Effective Java重点笔记--第二条 遇到构造器具有多

作者: DX5 | 来源:发表于2016-08-30 16:00 被阅读0次
引入#####

有时,我们会遇到需要设置多个参数的构造器,此时无论是使用静态工厂还是构造器都有局限性,那就是可读性低。如:
<code>
NutritionFacts cocaCola=new NutrutionFacts(240,8,100,0,35,27);
</code>
此时用户难以阅读,必须仔细的查看API文档,这些参数都对应着什么,如果不小心搞错了两个参数的位置,编译器不会报错,但程序运行时会出错,而且难以检查。

使用JavaBean模式#####

调用一个无参的构造器来创建对象,然后调用setter方法来设置每个必要的参数或可选的参数。

 NutritionFacts cocaCola=new NutritionFacts();
 cocaCola.setServingSize(240);
 cocaCola.setServings(8);
cocaCola.setCalories(100)
cocaCola.setSodium(35);

但是JavaBeans模式自身有很严重的缺点,因为构造过程被分到了几个调用中,在构造过程中JavaBean可能处于不一致的状态。需要程序员付出额外的努力来确保它的线程安全。

Builder模式#####

不直接生成想要的对象,让用户先调用参数构造器,得到一个builder对象,然后调用无参的build()函数来生成对象。

NutritionFacts cocaCola=new  NutritionFacts.Builder(240,8)
.calories(100).sodium(35).carbohydrate(27).build();

Builder模式编码容易,易于阅读。

相关文章

网友评论

      本文标题:Effective Java重点笔记--第二条 遇到构造器具有多

      本文链接:https://www.haomeiwen.com/subject/dbgfettx.html