242
社区成员




架构设计图:
在我的代码中,关键的类包括:
Main
: 接受输入,识别对应的指令,并调用Adventurer
类和FightMode
类的方法进行处理指令信息。Store
: 与Adventurer
类进行交互,并实例化新的 Bottle
, Equipment
, Food
传给冒险者。Adventurer
: 管理自己的价值体 Bottle
, Equipment
, Food
, Adventurer
, 以及战斗模式的方法。迭代中的架构调整:
Main
类中对指令的处理case语句分支急剧增加,导致很快便超出了codestyle
的规定,于是我根据指令间的内在联系分成几个子方法,如把关于价值体处理的指令放在一个方法中。FightMode
类来处理战斗日志中的正则表达式,为减少类之间的耦合度,把战斗日志的输入留在Main
,FightMode
类只用来进行处理和调用Adventurer
的方法。Bottle
,Equipment
,Food
和Adventurer
这四种价值体的数据内涵和业务功能差别较大,核心是围绕其price
建立统一的对象管理手段,通过建立接口实现了行为抽象层次。通过使用Junit
,从一开始的不适应,随着代码量的增加,我渐渐感受到了单元测试的重要性。Junit有效的帮我检查出一些低级错误,通过为每个方法编写测试,极大降低了bug的出现率。
一些经验(jiaoxun:
System.out
需要手动检查单元测试结果,随着代码量增加极易出现疏忽,因此可以用assert
自动检查是否有错。学习Java
是我从面向过程编程过渡到面向对象编程的开始,在之前的C语言中,我把所有的变量和函数堆到一个文件中,导致十分臃肿。
在oopre的学习中,我对面向对象的基本特征有了初步的认识:通过封装,可以让内部复杂性外部不可见,继承可以通过抽象层次来协同降低复杂性,多态可以通过多种形态来解耦复杂性。
我不仅学到Java的语法知识,还学到代码风格、测试的规范习惯,设计模式以及代码的合理架构。通过把一个复杂的问题分成几个类各司其职,培养锻炼了自己的代码思维逻辑。
目前还存在一些不足:各个类之间的分工不够明确,代码分配不均匀。有时为了更快的解决问题把几个类的工作放到一个类中解决,导致架构设计不够合理。希望在OO正课中能加深我对面向对象的理解! 😊
最后,感谢oo课程组的辛苦付出,希望oopre越来越好!ヾ(≧▽≦)o