多个参数初始化对象

多个参数初始化对象方法

// Builder Pattern - Pages 14-15
package org.effectivejava.examples.chapter02.item02.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 {
     
		// Required parameters
		private final int servingSize;
		private final int servings;

		// Optional parameters - initialized to default values
		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;
		}

		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;
	}

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

对于多个参数的类来说,通过静态内部类来构造对象,既方便有可靠。
本文是《effective java》 中介绍的方法。
本书翻译的有点水,国人不好看,我建议研读本书的方法是在GitHub上下载代码,看代码在看介绍,才能理解到精髓所在。

你可能感兴趣的:(java,effective,java)