我有一个现有的代码库,它使用静态工厂方法设计来实例化某些对象类型:
public static Something createSomething(int x, int y, .....)
{
// creates a Something object
}
我想扩展这个方法,允许它以不同的方式初始化Something对象,基于新的参数,这些参数将决定对象的创建方式。
最简单(且可扩展性最低)的方法是向工厂方法添加新参数。
这似乎不是正确的做事方式:
- 需要更新的工厂方法不止一种,而不仅仅是一种。
- 创建新方法将强制更改调用工厂的客户端代码。这种方式违背了使用单个位置生成对象的目的。
- 添加更多参数会导致参数列表过长,使用起来很不方便。
有没有更好的方法来扩展工厂方法?