我有3种算法 - 让我们称它们为a,b,C。这些都有自己的getter和setter方法,例如A
可能具有getA()
/setA()
的B和C。有一个MainDriver
类,该类可创建A,B或C的实例,这取决于该MainDriver
类的命令行参数所传递的内容。 MainDriver
类创建多个线程来执行创建实例的算法的方法。因此,当创建此算法实例时,它将此实例传递给扩展线程类的类,以便每个线程可以执行该算法的公共方法。
现在我的问题是我应该使用哪种设计模式来实现此体系结构?
线程类将如何知道哪种算法实例作为参数传递给它,并且相应地执行了哪种Getter和Setter方法?
首先您可以为所有算法创建层次结构。例如basealgo是接口,所有混凝土算法都将实现相同。
您的线程子类可以参考Basealgo("有关系"),您可以在传递给它的混凝土算法对象上调用方法。
任何事件/异步方向的"体系结构"将很容易解决您的问题,使您能够专注于业务代码而不是机械师。
告诉我我是否错了,但我们可以恢复您的规格:
- 根据参数,执行特定程序
- 所选程序必须在单独的线程中执行
例如,反应堆(现在与Spring的最后一个版本完全集成)提供了许多方法,以实现事件为导向的编程样式。
- 多线程将为您处理。您只关心池的配置(如果您需要特定的行为,但默认一个可以符合您的要求)
- 您只开发"算法"组件,这无非是执行某些特定代码的组件。这些组件中的每一个都会收听主计划所抛出的特定事件。别无其他。