创建对象的几种方式
构造器
静态工厂方法
通过Builder
静态工厂方法优点
有名称-调用更清晰
每次调用时不会创建一个新对象
可以返回原返回类型的任何子类型的对象
创建参数化类型实例的时候,使代码更简洁
静态工厂方法缺点
类如果不含共有的或受保护的构造器,就不能被子类化
与其他静态方法实际上没有任何区别
遇到多个构造器参数时要考虑用构建器
重叠构造器模式
但是,在有很多参数时,客户端代码难以编写且难以阅读。
JavaBeans模式。
调用一个无参构造器来创建对象,调用 setter 方法来设置参数。
缺点:构造过程被分到了几个调用,导致可能处于不一致状态。
Builder模式
让客户端利用所有必要参数调用构造器/静态工厂,得到builder对象,再调用类似于setter方法,最后调用无参的build方法来生成不可变对象。
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