ToB企服应用市场:ToB评测及商务社交产业平台

标题: java与es8实战之一:以builder pattern开篇 [打印本页]

作者: 科技颠覆者    时间: 2023-8-31 11:46
标题: java与es8实战之一:以builder pattern开篇
欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
关于《java与es8实战》系列

本篇概览








不可变对象(Immutable Objects)

三种创建对象的常用方法

直接用构造方法创建对象有什么问题

  1. public class NutritionFacts {
  2.     private final int servingSize;  // (mL)            required
  3.     private final int servings;     // (per container) required
  4.     private final int calories;     //                 optional
  5.     private final int fat;          // (g)             optional
  6.     private final int sodium;       // (mg)            optional
  7.     private final int carbohydrate; // (g)             optional
  8.     public NutritionFacts(int servingSize, int servings) {
  9.         this(servingSize, servings, 0);
  10.     }
  11.     public NutritionFacts(int servingSize, int servings,
  12.             int calories) {
  13.         this(servingSize, servings, calories, 0);
  14.     }
  15.     public NutritionFacts(int servingSize, int servings,
  16.             int calories, int fat) {
  17.         this(servingSize, servings, calories, fat, 0);
  18.     }
  19.     public NutritionFacts(int servingSize, int servings,
  20.             int calories, int fat, int sodium) {
  21.         this(servingSize, servings, calories, fat, sodium, 0);
  22.     }
  23.     public NutritionFacts(int servingSize, int servings,
  24.            int calories, int fat, int sodium, int carbohydrate) {
  25.         this.servingSize  = servingSize;
  26.         this.servings     = servings;
  27.         this.calories     = calories;
  28.         this.fat          = fat;
  29.         this.sodium       = sodium;
  30.         this.carbohydrate = carbohydrate;
  31.     }
  32. }
复制代码
  1. NutritionFacts cocaCola = new NutritionFacts(240, 8, 100, 0, 35, 27);
复制代码
  1. NutritionFacts cocaCola = new NutritionFacts();
  2. cocaCola.setServingSize(240);
  3. cocaCola.setServings(8);
  4. cocaCola.setCalories(100);
  5. cocaCola.setSodium(35);
  6. cocaCola.setCarbohydrate(27);
复制代码

静态工厂方法的优势

  1.     public Student(String name) {
  2.         this.name = name;
  3.     }
  4.     public Student(int age) {
  5.         this.age = age;
  6.     }
复制代码
  1.     public static Boolean valueOf(String s) {
  2.         return parseBoolean(s) ? TRUE : FALSE;
  3.     }
复制代码
[code]    public static  EnumSet noneOf(Class elementType) {        Enum[] universe = getUniverse(elementType);        if (universe == null)            throw new ClassCastException(elementType + " not an enum");        if (universe.length




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4