在面向对象的编程中对象的创建是最基本的动作,但是创建对象的方法有很多种,但是归根结底都是直接或者间接使用类的构造器完成实例的创建,包括静态工厂方法、JavaBean方式或者下面的要说的构建器模式,但是对于不同的情况,使用这几种方法各有利弊,这里使用一个实际的问题来引出这种对比。
【实际需求】
对一个包含10几个参数的类进行实例化,其中有些参数不是必须的,但是有些参数必须存在。
【问题分析】
首先对于实例化的这个动作,对于有编程经验的人再简单不过,第一个直接的想法就是写一个包含所有参数的构造器,但是回想一下这样真的好吗?每次初始化类的时候都会把自己弄晕,这个参数究竟是什么意思?
方法一:重载构造器
接触过Exception类构造器写法的人可能选择重载多个构造器的方法,如下:
public Exception()
public Exception(String message)
public Exception(String message, Throwable cause)
public Exception(Throwable cause)
protected Exception(String message, Throwable cause,
boolean enableSuppression,boolean writableStackTrace)
然后通过构造器之间的调用来完成初始化,但是当面对大量的实例参数时,需要扩展很多的构造器,显然这种方式的扩展性很差。
方法二:使用JavaBean方式
这种方式其实是不通过构造器传递参数,而是通过setter方法,如下:
public class User