在这个多线程场景中使用哪种设计模式?

时间:2017-02-15 15:21:42

标签: java multithreading design-patterns main

我有3种算法 - 我们称之为A,B,C。每种算法都有自己的getter和setter方法,例如:对于B和C,A可能有getA() / setA()。 有一个MainDriver类,它根据作为此MainDriver类的命令行参数传递的内容创建A,B或C的实例。 MainDriver类创建多个线程来执行创建其实例的算法的方法。因此,当创建此算法实例时,它会将此实例传递给扩展Thread类的类,以便每个单独的线程可以执行该算法的公共方法。

现在我的问题是我应该使用哪种设计模式来实现这种架构?

线程类将如何知道哪个算法实例作为参数传递给它,以及相应的哪个getter和setter方法?

2 个答案:

答案 0 :(得分:0)

首先,您可以为所有算法创建层次结构。例如BaseAlgo是界面,所有具体的Algos都将实现相同的目标。

你的Thread子类可以引用BaseAlgo(“有一个关系”),你可以调用传递给它的具体Algo对象的方法。

答案 1 :(得分:0)

任何事件/面向异步的“架构”都可以非常轻松地解决您的问题,使您能够专注于业务代码而不是机制。

告诉我,如果我错了,我们可以恢复你的规格:

  • 取决于参数,执行特定程序
  • 所选程序必须以单独的线程执行

例如,Reactor(现在与Spring的最新版本完全集成)提供了许多方法来实现面向事件的编程风格。

  1. 已经为您处理了多线程。您只关心池的配置(如果您需要特定的行为,但默认行为符合您的要求)
  2. 您只开发“算法”组件,这只是执行某些特定代码的组件。这些组件中的每一个都会监听主程序抛出的特定事件。没别了。