基本上我需要有一个灵活的设计来处理。我正在考虑这样的事情:
- 拥有一个接口(interface)
DataProcessor
,然后拥有不同类型的具体类,例如CSVDataProcessor
、FTPDataProcessor
、CloudDataProcessor
。 - 所有 DataProcessor 类都将实现在
DataProcessor
接口(interface)上定义的方法process()
我的问题是:
如果每个具体类需要不同的参数来执行 process()
方法,那么最好的设计应该是什么。例如,FTPDataProcessor
将需要文件、主机、端口等参数 - CSVDataProcessor
将需要文件位置,而架构 - CloudDataProcessor
将需要端点服务、用户、密码?
我的第一个想法是,使用构造函数将具体要求传递给每个具体类,但是如果需要的参数很多怎么办?
将来,将添加更多 DataProcessor
具体实现,这就是为什么我希望从一开始就有一个非常灵活的设计来实现它。
最佳答案
工厂设计模式
是您问题的答案。
DataProcessor p = ProcessorsFactory.getProcessor(yourParametersHere);
您应该重载您的工厂getProcessor()繁重的工作。最后,您的对象将仅了解 DataProcessor 接口(interface)和工厂,而不了解实现。这就是一项领先技术的工作原理: Spring Bean 工厂示例 http://javajadhav.blogspot.bg/2013/07/03-understanding-spring-bean-factory.html 所以你可以创建这样的东西。在 ProcessorsFactory 中,您可以从应用程序加载一些配置文件,并根据写入的属性来实例化适当的处理器实现。最后,您将仅使用您的interface.process + 配置文件。
关于Java 最好的设计是对象可以不同,但做的事情是一样的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43428821/