OOPre课程学习心得总结

ryujiny233 2025-11-17 17:49:45

24371397 郭俊游

一、架构设计演进与思考

在本次OOPre课程的最后一次作业中,我构建了一个完整的冒险者游戏管理系统,采用了分层的面向对象架构:

核心类结构:

  • 实体层Adventurer(冒险者)、Bottle(药水瓶)、Equipment(装备)、Spell(法术)

  • 抽象层Item接口、Usable接口,实现了多态行为

  • 功能层Main主控类、Lexer词法分析器、Parser语法解析器

以下是各次迭代的内容与实现的功能

第三次作业:引入分层与职责分离

第三次迭代第一次引入了类的继承和接口概念。在这个阶段,我将所有输入指令的解析逻辑都堆积在Main类的同一个方法中,这导致代码过于冗长。通过反思,我意识到这违背了单一职责原则,于是进行了重要的架构调整——引入了专门的Handle类来处理输入指令解析。这个类负责将不同的指令分发到对应的处理方法,使得Main类的职责更加清晰,也为后续的扩展奠定了基础。

第五次作业:工厂模式的应用与实践

第五次作业中,提出了工厂模式的设计观念。虽然我在之前的作业中已经使用了容器类来管理物品,但工厂模式的引入提高了代码的可扩展性,更加方便维护。后续如果需要扩展物品属性或创建方式,只需修改Factory类内部实现,而不会影响其他部分的代码。

第六次作业:观察者模式的巧妙应用

第六次作业引入了观察者模式,通过援助机制来考察我们对这种设计模式的掌握。观察者模式建立了一种一对多的依赖关系,当对象状态变化时,所有依赖者都会收到通知并自动更新,冒险者之间的上下级关系通过邻接表来维护。

第七次作业:递归下降解析的集成

第七次作业主要基于第六次作业建立的雇佣关系系统,引入了通过lr指令批量导入雇佣关系的新功能。这个功能需要通过递归下降方法来解析复杂的字符串输入,最终我添加了词法分析器和语法解析器,顺利实现了这一功能,这也证明了之前架构设计的良好扩展性。

整个架构演进过程让我深刻理解到:好的面向对象设计具有强大的适应能力,能够在需求变化时通过相对较小的调整来满足新的要求。

二、JUnit测试实践的心得体会

测试驱动开发的转变

刚开始接触JUnit时,我将其视为一种作业要求,总是在代码完成后再补充测试用例。但随着实践的深入,我逐渐体会到测试驱动开发的真正价值。先编写测试用例帮助我更好地理解需求,明确方法的边界条件和预期行为。这种开发方式不仅提高了代码质量,还改变了我的设计思路——我开始自然地编写更具可测试性的代码。

测试层次与策略

在实践中,我逐渐形成了多层次的测试策略:单元测试覆盖核心业务逻辑,集成测试验证模块间的协作,边界测试确保程序的健壮性。特别是对于复杂的战斗系统和雇佣关系逻辑,全面的测试用例成为了重构的安全网,让我能够自主进行代码改进。

测试维护的挑战与收获

随着作业迭代,测试代码的维护确实带来了挑战,但这也促使我思考如何设计更稳定的接口和更松散的耦合。我学会了使用setup方法管理测试环境,通过参数化测试减少重复代码,这些经验对提升我的工程化能力大有裨益。

三、面向对象编程的学习心得

思维模式的根本转变

这门课程带给我的最大收获不是Java语法知识,而是编程思维模式的根本转变。从最初的数据结构思维(思考如何组织数据)到对象行为思维(思考对象应该有什么职责和行为),这种转变彻底改变了我解决问题的方弍。

抽象能力的提升

面向对象编程本质上是一种抽象艺术。通过课程实践,我学会了如何识别问题域中的核心概念,如何通过适当的抽象层次来管理复杂度。从具体的药水瓶、装备,到抽象的Item接口,再到更高层的库存管理系统,每一层抽象都帮助我更好地理解问题本质。

设计原则的内化

课程中反复强调的封装、继承、多态不再是书本上的概念,而是我在实际编码中不断运用的工具。特别是封装性原则,让我意识到信息隐藏的重要性——良好的封装不仅提高了代码的安全性,更重要的是降低了模块间的耦合度,使系统更易于理解和修改。

设计模式的初步理解

通过实际项目的锻炼,我开始理解一些常用设计模式的适用场景。工厂模式用于对象创建,策略模式用于算法封装,组合模式用于树形结构处理,这些模式不再是抽象的理论,而是解决具体问题的有效工具。

四、课程改进建议

加强重构实践的指导

建议在课程中增加专门的重构实践环节,展示如何从初版的功能实现通过逐步重构演进到良好的面向对象设计。通过对比重构前后的代码,学生能够更直观地理解优秀设计的好处,掌握重构的具体技巧和方法。

引入真实项目案例研究

希望课程能够引入一些简化版的真实开源项目案例,让学生了解面向对象设计在工业级项目中的应用。通过分析优秀项目的架构设计,学生可以学习到更多实践中的设计决策和权衡考虑。

...全文
158 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

294

社区成员

发帖
与我相关
我的任务
社区描述
2026年北航面向对象设计与构造
java 高校
社区管理员
  • 孙琦航
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧