美文网首页
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