自己在做开发的时候,遇到过自己抽象的一个Bean类,拥有很多的成员变量。我们对这些个成员变量设置了private权限,然后用getter和setter来获取和设置变量值。在创建这些Bean类的实例的时候,有时候是因为懒(不想一个个的调用setter去设值),又或者是怕自己忘记给某个成员赋值(为此我可能还会在时候这些成员变量的时候再判断了一次是不是未赋值,又多写了一些代码),我又会给Bean类写一个带参的构造函数,把所有成员参数都扔进去。整体下来其实蛮臃肿的,可读性也不好。
不过这几天在读Johnua的Effective Java的时候,看到Builder模式用来解决这种难题,个人觉得很聪明,故把它写下来。
Effective Java第2条中,以营养成分表为例子:
//Sample from Effective Java Section 2
public class NutritionFacts {
private final int servingSize; //(mL) required
private final int servings; //(per container) required
private final int calories; // optional
private final int fat; //(g) optional
private final int sodium; //(mg) optional
private final int carbohydrate; //(g)