瞎聊 - 游戏程序中的动态售价逻辑

这是今天在工作中遇见的一个有趣的动态数据的实现需求。

构成:

  • 商店单位
  • 销售品的基础价格
  • 影响价格的参数
  • 销售品的最终价格

销售品的最终价格数据会在两个地方使用:

  • 界面信息展示
  • 销售逻辑判定

我们的实现逻辑可以分为手动刷新和实时演算。

手动刷新:

修改价格相关参数后,手动刷新商店价格。
这种做法意味着每一次修改价格参数后都需要运行一次刷新方法。
可能会出现由于编写者疏忽或者不同编写者协作不清楚规则导致价格没有实时刷新。

实时演算:

由于无论是界面信息还是执行销售都一定会执行一次获取价格的操作,我们可以把最终价格的演算直接放到“获取”这一操作中。

我在这里采用了实时演算的做法,获取最终价格是低频操作,这里产生的计算开销几乎可以忽略不计。
同时由于影响价格的参数可能会是多方面的,手动刷新出错率高,实时演算可以让后续开发不用顾忌这个问题。