2015-02-08 27 views
0

我正在为玩家升级游戏,例如健康再生和Max Health。在升级屏幕中,对于每次升级,我列出名称和级别并增加和减少按钮以增加和减少级别。升级是使用称为宝石的货币购买的。 1宝石可以使升级等级提高1.我应该使用适用于所有情况的单一代码段还是适用于特定情况的多段代码段?

提升某个升级等级的要求是玩家拥有的宝石数量大于0并且升级的等级不等于最高等级。

用于减少一定的提升水平的要求是升级的级别不是0

当升级级别增加或减少是可用的,我想增加按钮或减小按钮为绿色。当它不可用时,我希望它是红色的。

我已启用和禁用升级类中按钮绿色/红色增加和减少按钮的功能。即使按钮已被启用或禁用,或者如果该按钮尚未制作(只在该动作尚未完成的情况下它才移除/添加绿色按钮/红色图像),则可以调用启用/禁用功能。

我不知道我应该使用哪种策略来调用按钮启用/禁用功能。我会在这里解释2个策略。

策略1

这是使用单一的一段代码,适用于所有情况的工作的战略。每次按下升级按钮或按下重置按钮时,无论是否需要进行某些检查,根据上述条件检查并启用或禁用所有升级中的两个按钮。

优点:易于编码,简单,代码都在一起。

策略2

这是编写代码的多件,对特殊环境下工作的策略。仅适用于一次升级的代码将写入Upgrade类中,而不写入Main类。例如,当某个升级级别增加时,我只会检查一次升级,看它是否已达到最大值,然后检查Main类是否有宝石。如果我们没有,所有升级增加按钮将被禁用。

优点:只有在需要检查按钮时才会检查按钮。

在这一点上,我会选择做的主要是策略1,除了我会使用2个功能,而不是一个。一种功能是当升级增加时,然后我会检查是否需要禁用升级增加按钮,以及是否需要启用升级减少按钮。另一个功能是针对相反的情况。现在我对每个策略都有点担心。虽然实际性能影响可以忽略不计,但策略1似乎需要比所需的更多运行时间工作(它检查不需要检查的按钮)。但是,战略2似乎需要比必要的更多的编码工作。例如,当我按下重置按钮时,策略1将使用相同的代码处理它,但在策略2中,我必须明确启用所有升级增加按钮并禁用所有升级减少按钮,这似乎不自然。我想知道我应该做什么:战略1,战略2,还是我在本段开头提到的组合?

+0

绝对是一个或另一个。或者可能是一个组合。也许。 – 2015-02-08 01:17:46

回答

0

整体策略(包括决定何时应用您的策略需求)是“避免多次编码同一件事”。如果你多次编写代码,这是一个机会,有几个意想不到的变化(例如,在一个版本中,而不是在另一个版本中的一组错误)和维护负担(如果你改变一个,必须通过所有其他编码相同逻辑的地方,并更新每个地方)。

使用策略1来处理根据您的设计的操作适用于所有情况。

使用策略2来处理根据您的设计的操作仅针对少数情况。

你也可以在不同的点上结合策略并收集有意义的动作集合(在使用一个动作的代码可能需要采用其他特定动作的意义上)。

相关问题