标签:fat 设计 cal str 抽象类 场景 odi ret poi
建造者模式又名生成器模式,可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
使用场景:类的实例属性过多时,构造方法可能会很多;虽然我们可以用JavaBean的setter方法进行设置,但生成的对象状态可能不一致,导致对象不可用。最常见的:只赋值一部分属性,就拿去使用了,会导致NullPointerException异常。
这个时候就可以使用建造者模式,这也是《Effective Java》中推荐的。
建造者模式的常用实现方式:
一、内部静态类
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; private NutritionFacts(Builder builder){ this.servingSize = builder.servingSize; this.servings = builder.servings; this.calories = builder.calories; this.fat = builder.fat; this.sodium = builder.sodium; this.carbohydrate = builder.carbohydrate; } public static class Builder{ private final int servingSize; private final int servings; private int calories; private int fat; private int sodium; private int carbohydrate; public Builder(int servingSize, int servings){ this.servingSize = servingSize; this.servings = servings; } public Builder calories(int calories){ this.calories = calories; return this; } public Builder fat(int fat){ this.fat = fat; return this; } public Builder sodium(int sodium){ this.sodium = sodium; return this; } public Builder carbohydrate(int carbohydrate){ this.carbohydrate = carbohydrate; return this; } public NutritionFacts build(){ return new NutritionFacts(this); } } }
标签:fat 设计 cal str 抽象类 场景 odi ret poi
原文地址:https://www.cnblogs.com/wqff-biubiu/p/12627062.html