+-
使用组合(java)时如何实现关闭开关?
我在 Java中有一个非常简单的Player类,它使用一些策略对象,这些对象全部从接口PlayerStrategy继承.

PlayerStrategy的某些实现很简单,而另一些实现则占用大量资源,因此我需要确保在停止使用该策略时正确释放资源.这些策略还有一个额外的方法:turnOff()来解决这个问题.

现在,如果Player离开游戏,我希望它在需要它的所有策略中都调用turnOff().

问题在于,只有少数策略需要turnOff(),因此我不愿意将该方法添加到PlayerStrategy接口中.
现在,当播放器停止播放时,它将通过反射检查策略中是否存在方法turnOff().但这又笨又丑.有没有更好的办法?

最佳答案
>避免反思:反思是一个坏主意.尽可能(似乎可以)在任何地方都应避免.
>在接口中设置turnOff()是很好的:如果必须使用接口,请相信我,添加turnOff()或cleanup()方法是一个好主意;即使大多数子类的括号都为空.如果它们在将来进行更新以使用需要清理的某些资源,则无需进行额外的工作.
>您可以获得想要的东西,但是成本更高:如果您确实很僵硬,并且确保子类不会扩展任何其他类.您可以使用TurnOff()作为空方法使PlayerStrategy成为抽象类.这将解决您的问题,但将限制子类扩展其他类的能力.
点击查看更多相关文章

转载注明原文:使用组合(java)时如何实现关闭开关? - 乐贴网