我有一个工厂方法,它返回接口的实现。事情是 - 实现具有不同的构造函数参数。将属性传递给工厂方法
我的问题是 - 如何通过工厂方法传递参数到接口的不同实现?
我有一个想法,但我不知道是否有道理 - 将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);
然后,AlgoFactory可以通过相应的属性具体算法的构造,如果算法有参数(例如,Algo1没有参数)。如果某些属性不存在,则可以传递一个默认值(如果该算法中需要该值)。
正如你所看到的,我希望能够动态地改变算法。用户将在运行时选择算法并传递适当的参数,这些参数将被放入属性对象中。
这是否合理?
怎么样超载工厂方法? –
只有接口实现的属性才会有所不同,或者它们是否因呼叫而异? – dbugger
如果您需要将不同数量的参数传递给构造函数,最有可能您的设计不完美。如果你提供两个不同参数类的例子,这将是非常好的 –