我在Java中有一个非常简单的Player类,它使用一些策略对象,这些对象全部从接口PlayerStrategy继承。
PlayerStrategy的某些实现很简单,而另一些实现则占用大量资源,因此我需要确保在停止使用该策略时正确释放资源。这些策略还有一个额外的方法:turnOff()来解决这个问题。
现在,如果Player离开游戏,我希望它在需要它的所有策略中都调用turnOff()。
问题在于,只有少数策略需要turnOff(),因此我不愿意将该方法添加到PlayerStrategy接口中。
现在,当播放器停止播放时,它将通过反射检查策略中是否存在方法turnOff()。但这又笨又丑。有没有更好的办法?
最佳答案
turnOff()
是一件好事:如果您必须使用界面,请相信我添加turnOff()
或cleanup()
方法是一个好主意。即使大多数子类的括号都为空。如果它们在将来进行更新以使用需要清理的某些资源,则无需进行额外的工作。 PlayerStrategy
设为抽象类,并将turnOff()
作为空方法。这将解决您的问题,但将限制子类扩展其他类的能力。