游戏服务器中商城设计越来越大的小问题
商品结构体
任何一个游戏中的商品都是多种多样的,小到一瓶药水,大到装备外观,一切都可以被出售,这也意味着商品的结构是十分重要的。尽可能好的剥离【商品】这一对象的特质是OOM的基本功。
以下是最初设计的用于商品的结构体,但在实际后续使用过程中也进行了一些修改。好在改动并不算大。
// 商品信息
private int goodID;//商品ID
private int sortID;//用于排序和分类的ID
private int itemID;//商品代表的道具ID;
private int itemSum;//商品代表的道具数量
private int left;//剩余库存
private int max;//最大库存
private int moneyType;//兑换货币类型
private int price;//价格(原价)
private int discountPricel;//折扣价(实价)
private long beginTime;//开始售卖时间
private long endTime;//结束售卖时间
在最初的设计中,商品包含了绝大多数信息,而作为商品的集合,“商城”的概念被弱化了。换而言之,任何的商品都应当能够被剥离出来,在任意的商城之中进行展示和出售。
在与其他人进行讨论时,我们对这里的设计有比较大的争议。
我们主程与其他几人认为不需要将如此多的信息包含其中,如开始时间结束时间等可以被提取到商城结构中传输。毕竟在玩家数目大时打开商城的频率也是比较高的。
自然,也有一些人和我的想法一致,认为商品存在各类可能的例外。例如在某些商城中可能会出现的特殊存在,这样的设计在多数同类型游戏的活动中十分常见。
最终我决定选择