实验四报告
一、 策略模式
1.
应用场景分析
策略模式(Strategy Pattern)是一种行为型设计模式,它能让你定义一系列算法,
并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。
本例中,原来的代码直接由飞机调用 shoot 方法,无法使不同的射击方法分开,不利于
后续添加弹道以及弹道代码的复用,原代码中(未删除,但本例实验中未调用)的 shoot
方法虽然实现了直射和散射的功能,但较为臃肿,采用策略模式能够使得代码模块化,
同时不同策略的代码能够复用到不同类型的飞机上,提高了代码的复用性。
2.
解决方案
使用策略模式完成代码编写,uml 图如上所示:
Game 类:
策略模式外层的调用类,作为 client 存在
Context 类:
关键属性:
- shootStrategy:用于记录当前条件下需要执行的策略类型,在本例于 Game
类中实例化了 enemyShootStrategy 和 heroShootStrategy,用于根据条件
改变飞行器射击的方式
关键方法:
- executeShootStrategy:用于执行对应的飞行器发射子弹的方法,具体而言
通过将飞行器引用传入本方法,再根据飞行器类别(hero,enemy)、Context
的属性(即 shootStrategy 属性)来执行相应的射击方法。
- setShootStrategy:用于设置 Context 的属性,由 Game 中传入的参数进行
设置
评论0