架构简介:
一、src文件夹包含了五部分:
-
config:项目全局配置,对项目对象做到统一管理,主要包括静态Adventure集合、静态FightLog集合等
-
constants:常量集合,对项目中多次使用的变量值进行统一赋值,主要包括枚举类、正则表达式及其他常量
-
entity:实体类集合,对具有一定属性的实体进行封装得到的类,主要包括Adventure、Bottle、Equipment、Food等
-
util:工具类集合,可复用的静态方法,主要包括Op(输入参数处理)和FightLog(战斗日志处理)等
-
Main:项目启动入口
二、具体说明entity类的架构:
- entity中含有五部分:
- adventurer(内置Adventurer和Adventurers两个类)前者处理Adv的业务,后者内置adventurer管理方法,可通过不同索引方式得到adv,二者是聚合关系
- fightlog(内置FightLog和FightLogs两个类)与adventure逻辑类似
- prop(道具抽象类,将bot、food、equ统一抽象成adv的道具)好处是可以在Adv业务处理时统一处理prop,具体怎么实现逻辑下放给prop中的子类
- Commodity(接口,adv、prop连接此接口)统一计算价值体价值和数量的方法
- Store(单例模式,内含工厂模式,提供售卖功能)
三、再具体说明下Prop的架构:
- Prop是一个抽象类,又含有两个抽象类Bottle、Equipment继承于Prop(Food没有再细分的子类,故不抽象直接继承于Prop)Bottle、Equipment则有各自实现不同功能的子类,计算回血量、攻击伤害等再最底层的子类中实现。
设计细节:
- Adventurers和FightLogs的在config中静态化,这样可以全局应用(主要是在Op类中)
- Prop中有use、carry的抽象方法,在Bottle、Equipment、Food中实现use、carry逻辑至于use中回血量和造成伤害的计算再下放到子类里,每个层次仅实现本层次的功能,这样子可以实现低耦合
- adventurer中处理业务时统一使用prop,prop内置属性type,判断时候用AbstractBaseTypeEnum枚举类进行判断