为主要目的不可运行的类实现runnable(编码风格)

时间:2014-01-17 12:44:01

标签: java coding-style runnable

我正在为Guild Wars 2编写一个boss计时器。我有一个Boss类,其中包含所有相关的游戏事件和一个update()方法,用于从API中获取当前事件状态。

为了降低我想要并行化请求的所有老板的更新时间。

现在,我可以在Runnable课程中轻松实现Boss界面,并使用update()方法调用run()方法。

之后我会迭代所有老板,将它们传递给Executor的{​​{1}}方法并等到所有老板都更新。

为一个类实现execute()接口是否有什么问题,这个类更像是一个包含信息的类,而不是关于编码风格的工作者?

另外,我还可以构建一个可运行的sperate更新程序,并执行Runnable对象的update()方法,而不是将其包含在Boss类本身中。

1 个答案:

答案 0 :(得分:0)

  

为一个类实现Runnable接口是否有什么问题,这个类更像是一个包含信息的类,而不是关于编码风格的工作者?

听起来你正试图拥有一组包含数据的类和另一组具有行为的类。这是一个糟糕的设计。面向对象编程是指将数据和行为组合成一种事物(对象)。

当涉及一个类是否应该实现Runnable接口(或任何其他接口)时,最重要的是遵守该接口的契约。这由the JavaDoc for Runnable描述:

  

Runnable接口应由任何其实例由线程执行的类实现...   此接口旨在为希望在活动时执行代码的对象提供通用协议...处于活动状态只表示线程已启动且尚未停止。

您提到使用Executor,因此您确实希望这些实例由线程执行,因此Runnable是合适的。