java怎么制作放置游戏_从零开始实现放置游戏(八)——实现后台管理系统(6)代码重构...

前几张,我们主要实现了升级经验、人物等级属性、地图、地图怪物,这四种配置的增删查改以及Excel导入功能。我们主要以地图怪物为例,因此在文章末尾提供的源代码中只实现了地图怪物这部分的逻辑功能。

如果你照猫画虎,把4种配置功能的逻辑全部实现的话,就会发现,增删查改的代码基本相同,除了SQL语句和模型对象不同,其他地方变化不大。

本章我们利用泛型模板,对整个系统就行重构。在重构结束后,你就会发现写代码简直就是特喵的艺术!

后端重构

idlewow-core

我们从最底层开始,首先重构位于core模块中的数据访问层。目前看来,基本上所有的模型对象,都应包含增删查改、批量添加、列表查询这些基本方法。那我们把这些方法抽象到一个单独的Mapper和Manager里。

新建com.idlewow.common包,再该包下新建接口类BaseMapper:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.idlewow.common;importcom.idlewow.common.model.QueryParam;importjava.util.List;public interface BaseMapper{/*** 添加记录

*@paramt*/

intinsert(T t);/*** 批量添加记录

*@paramlist

*@return

*/

int batchInsert(Listlist);/*** 更新记录

*@paramt*/

intupdate(T t);/*** 删除记录

*@paramid*/

intdelete(String id);/*** 根据id查询

*@paramid

*@return

*/T find(String id);/*** 根据条件查询总数

*@paramqueryParam

*@return

*/

intcount(QueryParam queryParam);/*** 根据条件查询列表

*@paramqueryParam

*@return

*/Listlist(QueryParam queryParam);

}

BaseMapper.java

再在该包下,新建一个抽象类BaseManager,代码如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.idlewow.common;importcom.idlewow.common.model.PageList;importcom.idlewow.common.model.QueryParam;importorg.springframework.beans.factory.annotation.Autowired;importjava.util.List;public abstract class BaseManager{

@Autowiredpublic BaseMapperbaseMapper;public voidinsert(T t) {int effected =baseMapper.insert(t);if (effected == 0) {throw new RuntimeException("sql effected 0 rows");

}

}public void batchInsert(Listlist) {int splitSize = 100;int index = 0;int total =list.size();while (index <=total) {int end = index +splitSize;if (end >total) {

end=total;

}

List sublist =list.subList(index, end);int effected =baseMapper.batchInsert(sublist);if (effected == 0) {throw new RuntimeException("sql effected 0 rows");

}

index+=splitSize;

}

}public voidupdate(T t) {int effected =baseMapper.update(t);if (effected == 0) {throw new RuntimeException("sql effected 0 rows");

}

}public voiddelete(String id) {int effected =baseMapper.delete(id);if (effected == 0) {throw new RuntimeException("sql effected 0 rows");

}

}publicT find(String id) {

T t=(T)baseMapper.find(id);returnt;

}public PageListlist(QueryParam queryParam) {

PageList pageList = new PageList<>();int count =baseMapper.count(queryParam);

List list =baseMapper.list(queryParam);

pageList.setTotalCount(count);

pageList.setData(list);

pageList.setPageParam(queryParam.getPageParam());returnpageList;

}

}

BaseManager.java

还是以地图怪物为例,我们重构MapMobMapper和MapMobManager,只要让他们继承BaseMapper和BaseManager即可,代码如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.idlewow.mob.mapper;importcom.idlewow.common.BaseMapper;importcom.idlewow.mob.model.MapMob;public interface MapMobMapper extends BaseMapper{

}

MapMobMapper.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.idlewow.mob.manager;importcom.idlewow.common.BaseManager;importcom.idlewow.mob.model.MapMob;importorg.springframework.stereotype.Component;

@Componentpublic clas

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值