构建器模式(Builder Pattern):

View Code
package edu.sjtu.erplab.builder;

public class NutritionFacts {

    private final int servingSize;
    private final int servings;
    private final int calories;
    private final int fat;
    private final int sodium;
    private final int carbohydrate;

    // 构造器,静态内部类
    public static class Builder {
        // 必要参数
        private final int servingSize;
        private final int servings;
        // 可选参数
        private 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;//返回Builder类对象本身,以便把调用链接起来
        }

        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;
        sodium = builder.sodium;
        carbohydrate = builder.carbohydrate;
    }
    
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "["+
                "servingSize:"+servingSize+
                ",servings:"+servings+
                ",calories:"+calories+
                ",fat:"+fat+
                ",sodium:"+sodium+
                ",carbohydrate:"+carbohydrate+
                "]";
    }

    public static void main(String[] args) {
        NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8)
                .calories(100).sodium(35).carbohydrate(27).build();
        
        System.out.println(cocaCola);
    }
}

 

相关文章:

  • 2022-12-23
  • 2022-02-11
  • 2021-06-06
  • 2021-12-20
  • 2022-12-23
  • 2021-08-18
  • 2022-12-23
猜你喜欢
  • 2021-12-20
  • 2021-12-17
  • 2022-12-23
  • 2021-04-18
  • 2022-02-06
相关资源
相似解决方案