概念
概念:系统中的每一个资源分配一个唯一标识。
举例:金币、钻石、道具、礼包、勋章、英雄、英雄碎片、活动积分、表情等。
中间层:处理资源增减请求。
举例
签到为例
红色要优于橙色。
红线逻辑,签到模块不关心奖励是怎么加上去的。
中间层处理资源
中间层实现了增减资源的操作。
两张表
资源表
id | type | desc | ext... |
---|---|---|---|
资源ID唯一标识 | 不同的类型 | 描述 | 一些扩展字段 |
签到表
day | id | count |
---|---|---|
第几天 | 资源ID | 数量 |
需求扩展
需求:签到给英雄,如果玩家已经拥有该英雄,则改为给3个英雄碎片。
实现:兑换表:英雄、英雄碎片、兑换个数。把自动拆为碎片的逻辑放入中间层,签到模块不用关心。
需求:如果玩家获得A道具100次,获得S勋章。获得3次S勋章,达成Y成就。
实现:勋章表:道具、收集次数。成就表:勋章、收集次数。
增加道具时,对应计数+1。判断是否触发勋章获得的条件,如果达成,增加对应的勋章。
增加勋章时,对应计数+1。判断是否触发成就获得的条件,如果达成,增加对应的成就。
道具、勋章、成就,都资源化,无差别对待。根据资源表中的type,做不同逻辑。
不同的模块,可以复用这套逻辑。
需求:签到给积分,积分可以兑换英雄碎片。
实现:积分作为一种资源,分配一个ID,对接兑换模块。
兑换模块,先发起减请求,再发起加请求。
总结
- 资源道具化,统一性。
- 中间层,对外界屏蔽不同资源的差异。
- 子模块不直接交互,通过中间层间接交互。