我有一个返回接口实现的工厂方法。问题是 - 实现具有不同的构造函数参数。
我的问题是 - 如何通过工厂方法将参数传递给接口的不同实现?
我有一个想法,但我不确定它是否有意义 - 将 Properties 对象传递给工厂方法?这样每个接口实现都可以获取其构造函数所需的属性,而工厂接口将统一。
这有意义吗,还是有更好的解决方案?
我决定添加一个示例,以便更好地阐明问题。
假设我们有接口SomeAlgorithm
并且我们有具体的算法,其中每个算法可能有不同的参数,例如
SomeAlgorithm algo = new Algo1();
SomeAlgorithm algo = new Algo2(noOfIterations);
SomeAlgorithm algo = new Algo3(precision, boundary);
我希望能够做类似的事情
SomeAlgorithm algo = AlgoFactory.getAlgo("algoName");
我处理不同参数的方法是
SomeAlgorithm algo = AlgoFactory.getAlgo("algoName", properties);
然后,如果算法完全有参数(例如 Algo1 没有参数),AlgoFactory 可以将适当的属性传递给具体的算法构造函数。如果某些属性不存在,则可以传递默认值(如果算法中需要该值)。
如您所见,我希望能够动态更改算法。用户将在运行时选择算法并传递适当的参数,这些参数将被放入属性对象中。
这有意义吗?