271
社区成员
发帖
与我相关
我的任务
分享最终架构
经过一学期的迭代开发,我的冒险者管理系统最终形成了这样的架构:
核心类结构:
- Adventurer:冒险者类,管理个人属性、物品和状态
- Bottle及其四个子类:管理不同类型的药水
- Equipment及其三个子类:管理装备系统
- Factory:专门负责创建各种物品
- Lexer/Parser:处理复杂的lr指令解析
迭代历程与思考
第2次作业:搭建基础框架
初次接触面向对象,建立了Adventurer、Bottle、Equipment三个核心类,主要学习使用ArrayList管理对象间的基本关系。
第3次作业:引入继承体系
将Bottle重构为抽象类,建立完整的药水继承体系。我尝试通过Usable接口来统一药水与法术的行为。
第5次作业:应用设计模式
第五次作业中引入工厂模式后,物品创建的复杂度得到了有效管理。同时采用HashMap替代线性查找,大大提升了系统的查询性能。
第6次作业:处理复杂关系
管理雇佣关系,通过递归算法实现自动援助机制,我认为这是最具挑战性的一次迭代。
第7次作业:算法实践
实现词法分析器Lexer和递归下降解析器Parser,弄明白了编译原理的一些基本概念,调试过程艰难但收获满满。
一开始会觉得"为什么要写测试?直接运行不就好了?"
后来才发现:
-测试帮我抓住了深克隆的bug
-边界情况不测试真的会翻车
-写测试的过程就是在梳理逻辑
现在:写完代码第一件事——写测试!!!
我学会了不是把所有代码都堆在一起,而是把不同的功能分给不同的“小管家”,让每个小管家管好自己的事情。
从最初的过程式编程习惯,逐步转变为以对象为中心的思考方式,慢慢体会到封装、继承、多态这三个概念在实际编码中到底有什么用。
在具体实践中,我通过构建药水系统的继承体系,体会到代码复用的优势;在实现工厂模式时,认识到集中管理对象创建逻辑的重要性。这些经历让我对怎么把面向对象设计得更好有了更深入的理解。
在代码规范方面,我经历了从忽视到重视的转变。初期代码中存在方法过长、命名随意等问题,给调试和维护带来诸多困难。通过不断改进,我学会了合理拆分方法、规范命名约定,因此代码变得好读多了,改起来也方便不少。
从第一次作业连语法错误都修得磕磕绊绊,到如今能设计递归下降解析器,这学期的进步超出了我的预期。最后,这门课让我明白,好的代码不仅要能运行,更要易读、易维护。
希望课程开始时能有个Java语法速成班,对于没学过Java的同学来说,起步确实有点吃力。
完结撒花~~~🎉
这学期的OOPre让我收获满满。面向对象不只是写代码,更是一种思考方式。感谢老师和助教们的辛苦付出!!!