你如何使用静态工厂方法和模拟协调?
很多人只会说:不要使用静态工厂方法,而是使用DI.
好吧,有时你无法避免静态工厂方法.考虑以下用例,应该是熟悉的:
想象一下,你有一个叫做Option
scala的类.如果要为所有缺失值重用相同的实例,则无法避免使用静态工厂方法.
一旦你去new Option(null)
创建一个新的选项对象,你就不能一遍又一遍地返回同一个对象.
类似的用例是Integer.valueOf()
将重用整数对象用于低于128的值.不使用静态工厂方法是不可能的.
另一个优点是工厂方法比new
关键字更具描述性.
那么你们如何处理必须使用静态工厂方法并同时想要使用继承和模拟?
谢谢.