实现类的可运行性,该类的主要目的是不可运行(编码风格)



我正在为《激战2》编程一个boss计时器。我有一个包含所有相关游戏事件的Boss类和一个从API获取当前事件状态的update()方法。

为了降低所有boss的更新时间,我想将请求并行化。

现在我可以很容易地在Boss类中实现Runnable接口,并在run()方法中调用update()方法。

在那之后,我会迭代所有的boss,将它们传递到Executorexecute()方法中,然后等待所有boss更新。

为一个类实现Runnable接口有什么问题吗?这个类在编码风格方面更像是一个保存信息的类,而不是一个工作者?

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

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

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

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

Runnable接口应该由任何实例要由线程执行的类来实现。。。此接口旨在为那些希望在活动时执行代码的对象提供一个通用协议。。。处于活动状态意味着线程已经启动,但尚未停止。

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

最新更新