【JAVA】Builder模式

来源:互联网 发布:泰坦尼克号真相 知乎 编辑:程序博客网 时间:2024/05/17 07:24
package com.wangyao.utils;public class NutritionFacts {private final int servingSize;private final int servings;private final int calories;private final int fat;private final int carbohydrate;private final int sodium;public static class Builder{//Required Parametersprivate final int servingSize;private final int servings;//Optional parameters - initialized to default valuesprivate int calories = 0;private int fat = 0;private int carbohydrate = 0;private int sodium = 0;public Builder(int servingSize, int servings){this.servingSize = servingSize;this.servings = servings;}public Builder calories(int val){calories = val;return this;}public Builder fat(int val){fat = val;return this;}public Builder carbohydrate(int val){carbohydrate = val;return this;}public Builder sodium(int val){sodium = val;return this;}public NutritionFacts build(){return new NutritionFacts(this);}}private NutritionFacts(Builder builder){servingSize = builder.servingSize;servings = builder.servings;calories = builder.calories;fat = builder.fat;carbohydrate = builder.carbohydrate;sodium = builder.sodium;}public static void main(String[] args){NutritionFacts cocaCola = new NutritionFacts.Builder(210, 10).calories(10).sodium(35).calories(27).build();}}
使用场景: 多于4个变量。比JAVA BEAN模式线程安全,比重叠式构造清晰、