270
社区成员
发帖
与我相关
我的任务
分享核心架构根据 “封装、解耦” 展开,分成三个模块。
实体模块:
把冒险者、装备、药水等封装成类,属性和行为内聚,互不打扰。
管理模块:
通过工厂模式统一创建道具,命令处理器隔离指令解析逻辑。
接口层:
定义 Useable 接口,让所有可使用物品实现统一调用标准。
主要是利用封装、继承、多态实现代码复用,通过设计模式降低模块依赖,系统可以灵活扩展。

OOPre的五次迭代作业,简直就是我的“代码装修日记”,每次都在给之前的代码修复保养:
类只作为属性容器,所有逻辑堆在 Main 类,直接操作对象属性,修改麻烦、容易出错。
拆分药水子类(HpBottle、AtkBottle),实现 Useable 接口,复用父类属性,减少重复代码,新增道具时更方便。
用 HashMap 替代 ArrayList 存储装备,查找效率从 O (n) 提升至 O (1),
工厂模式集中管理道具创建,观察者模式实现上下级自动协作,命令解析模块独立拆分,降低修改影响范围。
之前一直觉得写测试是“浪费时间的多余步骤”,直到第五次作业重构崩了好几次后,才发现JUnit简直就是“救命神器”!
批量运行用例,比手动测试高效快速,能及时发现数值错误问题;
第六次作业加观察者模式时,我先跑了一遍旧测试用例——比如“冒险者攻击怪物”“装备加防御”这些功能,确认都绿了再写新功能。后来改Leader的掉血阈值(从50改成40),只需要改测试用例里的预期值,跑一遍就知道“下级是否在40血时正确加血”,不用怕“改了A功能,崩了B功能”。
写测试时会被迫思考“这个类能接受什么输入?非法输入怎么处理?”
OOPre最牛的不是让我学会了写子类、用设计模式,而是让我的“代码思维”彻底得到改造。
不用再自己一步步盯着,算新血量、赋值、打印这些活儿,让冒险者和药水自己配合着干就行,代码读起来就跟讲故事一样。
设计模式也从看不懂的名词,变成了真能用得上的解题工具!以前总觉得 “工厂模式不就是 new 个对象吗?”,真用上了才发现:要加 10 种道具的时候,它能把创建道具的逻辑都放一块儿管,不用在业务代码里写 10 个重复的 new;观察者模式更是解决了上下级互相缠着想分都分不开的问题,以前 Leader 里要写priest.heal(this),Priest 里又要写if(leader.hp<50),你调用我、我调用你缠得死死的,用了观察者模式,两个类只用靠接口打交道,谁也不依赖谁。
封装、继承、多态也终于不再是光靠概念了。
封装就是冒险者的 hp 不能直接改,得用 setHp () 方法,这样就不会不小心把血量设成负数,
继承让药水的子类直接用父类的冷却时间逻辑,不用再重新写,
多态更方便,让用道具的代码变统一(不管是药水、卷轴还是技能,只要实现了 Useable 接口,冒险者都能直接调用 use () 方法,不用写一堆 if...instanceof 的判断语句。)
递归下降有点抽象,要是能够有多一些指南:一步步从简单的解析,再扩展到复杂指令,学起来就没那么费劲了。
希望能加强中测!
🎉🎉🎉🎉🎉🎉