270
社区成员
发帖
与我相关
我的任务
分享项目采用分层架构:
Main.javaCommand.javaFunction 类中相应的方法,并接收和向标准输出流输出字符串,涉及 lr 指令的调用 parser 中的方法。parser (package)lr 命令的复杂嵌套字符串,包括 Token.java (词法单元), Lexer.java (词法分析器), Parser.java (语法分析器)。Function.javaContext.javaAdventuerer 实例,持有一个 Map 来存储和检索,为整个应用提供了一个统一的数据访问点。Adventurer.java
AidEvent.java
domain.items (package)
物品子系统,结构清晰,利用了继承和接口实现多态。
Item.javaBottle.java, Equipment.java, Spell.javaItem 并定义了各自的共同属性。具体物品类Usable 接口获得 use() 方法。Usable.java
use() ,被药水和法术实现,使得 Function 类可以统一处理不同类型物品的使用逻辑。ItemFactory.java
Function** 类无需知道具体物品类的构造细节,只需提供类型和参数即可创建实例,降低了耦合度。
从各次迭代的视角看待:
第一次迭代时,为了避免过度使用静态方法,考虑将架构调整为分层式的架构,在 Main 方法内部构建 Context.java -> Function.java -> Command.java 的依赖关系,通过依赖注入实现了各层组件之间的解耦,增强了可测试性和可扩展性。
第二次迭代细化了物品种类并且增加了物品功能,考虑将 item , bottles , equipment , spells 作为包,实现了模块化管理。在 item 中, Item 作为所有物品的顶级抽象父类;在 bottle , equipment , spells 中, Bottle , Equipment , Spell 又作为各自实现类的中间抽象父类。另外,将 Usable 作为可使用物品共同实现的接口,也使得可使用物品可以共同管理。通过以上架构,基本实践了面向对象编程的继承性和多态性。
第三次迭代架构方面的变化主要在于,实现了 ItemFactory 作为工厂模式的实践,并将核心类的依赖关系调整为 Context.java / ItemFactory.java -> Function.java -> Command.java ,使职责更加分明。
第四次迭代主要增加了雇佣关系,其中架构方面的调整在于增加了 AidEvent 类,单独实现一个事件类可以避免在复杂的依赖关系之间来回传递参数,使得逻辑大大简化,同时与 Adventurer 实体解耦。
第五次迭代主要增加了梯度下降法实现的嵌套关系分析,架构层面的变化主要是增加 parser 包,并在其中实现 Token.java (词法单元), Lexer.java (词法分析器), Parser.java (语法分析器),并在 Command 中调用,避免 Function 功能复杂化,保证了单一职责原则。
Usable 接口,提高代码扩展性。