Effective Java之考虑用Java静态工厂方法代替构造函数

363 阅读1分钟

序言

很多情况下我们都是通过构造函数来构造对象,当由于语言特性,构造函数要与类同名,重载构造函数只是参数不同很容易造成混淆。但是采取java静态工厂方法可以避免这些缺点。

优势

1.静态工厂方法拥有姓名

因为拥有姓名,所以可在在命名上加以区分,代码更容易阅读。

2.不需要每次调用都新建一个新的对象,减少开销

如果我们用关键字new新建对象,那么么一次都会新建一个新的对象。而在某些情况下只需要返回一个对象,而并不关心有没有被使用过,静态工厂方法可以反复利用以创建的对象。

3.可以返回子类

构造函数只能返回确切的自身那个类型,而静态工厂方法可以返回类的子类型,更加灵活。

4.多了一层控制,更容易修改。

运用静态工厂方法可以预先对某些属性进行初始化,测试直接调用静态工厂办法而不用多次粘贴复制。如图

劣势