【发布时间】:2012-02-02 08:28:02
【问题描述】:
Rich Hickey 在他的 talk 在 54:53 分钟时谈到了使用队列作为解耦依赖程序部分的一种手段。您能否举个例子说明如何将以下 Java 伪代码解耦以改进其设计和/或灵活性:
// Warning: Java-pseudo-code ahead
class Job {
public void doRun(A a) {
saveObjectToDatabase(a);
B b = computeB(a);
saveObjectToDatabase(b);
C c = computeC(b);
logToFile(c);
}
}
saveObjectToDatabase 和saveObjectToDatabase 可以看作是一种有副作用的方法,而computeB 和computeC 的输出只依赖于a。
我知道这个问题相当模糊/广泛。我想了解如何利用排队机制而不会使我的程序变得非常复杂,并且仍然确保它以正确的顺序做正确的事情。感谢任何指向正确方向的指针。
【问题讨论】:
-
不是很清楚。您展示的示例有一个独立的方法,它不使用任何外部依赖项。没有什么可以解耦,因为 Job 没有与任何东西耦合。
-
我的猜测是@Matt 想让不同的线程执行 computeB() 和 computeC() 方法,使用队列在不同线程之间移动工作单元。
-
感谢书的链接,去看看。
标签: java message-queue jobs decoupling