在这种多线程场景中使用哪种设计模式?
Which Design Pattern to use in this multi-threaded scenario?
我有 3 个算法 - 让我们称它们为 A、B、C。每个算法都有自己的 getter 和 setter 方法,例如A
可能有 getA()
/setA()
B 和 C 也一样。
有一个 MainDriver
class,它根据作为命令行参数传递给此 MainDriver
class 的内容创建 A、B 或 C 的实例。
MainDriver
class 创建多个线程来执行创建其实例的算法的方法。因此,当创建此算法实例时,它会将此实例传递给扩展线程 class 的 class,以便每个单独的线程都可以执行该算法的 public 方法。
现在我的问题是我应该使用哪种设计模式来实现这个架构?
线程class如何知道将哪个算法实例作为参数传递给它以及相应地执行哪个getter和setter方法?
首先,您可以为所有算法创建层次结构。例如BaseAlgo 是接口,所有具体算法都将实现相同。
您的 Thread 子类可以引用 BaseAlgo("has a relationship"),您可以在传递给它的具体 Algo 对象上调用方法。
任何以 Event/Asynchronous 为导向的 "Architecture" 都会很容易地解决您的问题,使您能够专注于业务代码而不是机制。
如果我错了请告诉我,但我们可以这样恢复您的规格:
- 根据参数,执行特定程序
- 所选程序必须在单独的线程中执行
例如,Reactor(现在与 Spring 的最新版本完全集成)提供了许多方法来以面向事件的编程风格执行此操作。
- 多线程已经为您处理好了。你只关心你的池的配置(如果你需要特定的行为,但默认的行为符合你的要求)
- 你只开发你的 "algorithm" 组件,这只不过是一个执行一些特定代码的组件。这些组件中的每一个都监听主程序抛出的特定事件。没有别的。
我有 3 个算法 - 让我们称它们为 A、B、C。每个算法都有自己的 getter 和 setter 方法,例如A
可能有 getA()
/setA()
B 和 C 也一样。
有一个 MainDriver
class,它根据作为命令行参数传递给此 MainDriver
class 的内容创建 A、B 或 C 的实例。
MainDriver
class 创建多个线程来执行创建其实例的算法的方法。因此,当创建此算法实例时,它会将此实例传递给扩展线程 class 的 class,以便每个单独的线程都可以执行该算法的 public 方法。
现在我的问题是我应该使用哪种设计模式来实现这个架构?
线程class如何知道将哪个算法实例作为参数传递给它以及相应地执行哪个getter和setter方法?
首先,您可以为所有算法创建层次结构。例如BaseAlgo 是接口,所有具体算法都将实现相同。
您的 Thread 子类可以引用 BaseAlgo("has a relationship"),您可以在传递给它的具体 Algo 对象上调用方法。
任何以 Event/Asynchronous 为导向的 "Architecture" 都会很容易地解决您的问题,使您能够专注于业务代码而不是机制。
如果我错了请告诉我,但我们可以这样恢复您的规格:
- 根据参数,执行特定程序
- 所选程序必须在单独的线程中执行
例如,Reactor(现在与 Spring 的最新版本完全集成)提供了许多方法来以面向事件的编程风格执行此操作。
- 多线程已经为您处理好了。你只关心你的池的配置(如果你需要特定的行为,但默认的行为符合你的要求)
- 你只开发你的 "algorithm" 组件,这只不过是一个执行一些特定代码的组件。这些组件中的每一个都监听主程序抛出的特定事件。没有别的。