java中的Thread类可以作为状态模式的一个例子吗?

时间:2015-08-11 10:04:24

标签: java multithreading design-patterns

Java中的Thread类可以是状态模式的示例。正如状态模式所说“封装基于状态的行为并将行为委托给当前状态”。

但是在线程类中,所有状态都被定义为enum而不是封装状态及其行为,因此它不应该。请澄清

2 个答案:

答案 0 :(得分:3)

不,根据状态模式,在状态的基础上,替换类会改变对象的行为。但是在线程中我们没有定义任何与New,Runnable,Running和Dead状态相对应的替换类。所以线程不是状态模式的一个例子。

答案 1 :(得分:0)

Thread是命令模式的一个示例。由于具有动作/执行方法的接口,许多人将策略和命令模式混合在一起...所以你的直觉并没有太过分。

这里的主要区别在于线程更专注于执行而不是让调用者负责处理进程。状态模式更侧重于动态执行算法,但它也处理操作。

Java API Pattern Examples

Thread Pools Command Pattern