Java 在这个多线程场景中使用哪种设计模式?
我有3种算法——让我们称它们为A、B、C。每种算法都有自己的getter和setter方法,例如Java 在这个多线程场景中使用哪种设计模式?,java,multithreading,design-patterns,main,Java,Multithreading,Design Patterns,Main,我有3种算法——让我们称它们为A、B、C。每种算法都有自己的getter和setter方法,例如A可能有getA()/setA()同样适用于B和C。 有一个MainDriver类,它根据作为命令行参数传递给该MainDriver类的内容,创建a、B或C的实例。 MainDriver类创建多个线程来执行创建其实例的算法的方法。因此,当创建此算法实例时,它会将此实例传递给扩展Thread类的类,以便每个线程都可以执行该算法的公共方法。 现在我的问题是我应该使用哪种设计模式来实现这个架构 thread
A
可能有getA()
/setA()
同样适用于B和C。
有一个MainDriver
类,它根据作为命令行参数传递给该MainDriver
类的内容,创建a、B或C的实例。
MainDriver
类创建多个线程来执行创建其实例的算法的方法。因此,当创建此算法实例时,它会将此实例传递给扩展Thread类的类,以便每个线程都可以执行该算法的公共方法。现在我的问题是我应该使用哪种设计模式来实现这个架构
thread类如何知道哪个算法实例作为参数传递给它,以及相应地执行哪个getter和setter方法
首先,您可以为所有的algirithms创建一个层次结构。e、 g.BaseAlgo是接口,所有具体的算法都将实现相同的接口
线程子类可以引用BaseAlgo(“具有关系”),并且可以调用传递给它的具体Algo对象上的方法。任何面向事件/异步的“体系结构”都可以很容易地解决问题,使您能够专注于业务代码而不是机制 如果我错了,请告诉我,但我们可以像这样恢复您的规格:
- 根据参数,执行特定程序
- 所选程序必须在单独的线程中执行
如果上传你的代码会更好。这个问题更多的是基于观点。你的问题的答案会随着要求而改变。查阅四人帮关于设计的书patterns@GabrieleB-大卫:“查找四人帮的书”-不是很有帮助@初学者萨克:我同意,但是考虑到这些要求,你的意见是什么?@shryasgokhale在stackoverflow上发布之前,你应该对你的问题进行研究,而不是仅仅告诉你去看我建议的资源页面,这样你就可以找到你问题的答案。谁知道呢,如果你真的找到了GoF的书,你可能会学到比你想要的答案更多的东西