1、考虑用静态工厂方法代替构造器
优点
- 静态工厂方法有名称
- 可以复用对象,不用每次都去构造,提升性能,比如Boolean.valueOf(boolean)
- 可以返回原返回类型的任何子类型对象。这样可以隐藏类的实现,使得API非常简洁
- 可以利用类型推导,在创建参数化类型实例的时候,使得代码更加简洁
缺点
类如果不含有共有的或者受保护的构造器,无法被子类化。其实我们可以用保护型的构造器解决这个问题。但是这也不太合理,静态工厂方法又有继承的话,其实会比较难看。
遇到多个构造器参数时要考虑构建器
就是build模式,对于多参构造且多参可选的情况非常好用