以下为《设计模式课程设计报告》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
2020至2021第 一 学期期末考试
课 程: 设计模式
题 目: 设计模式课程设计报告
类 别:论文□ 设计( 创业实践□ 实验报告调研报告□ 其他□
院 系: 计算机与信息***
专业班级: 18计某某1班
学 号:
学生姓名:
任课教师: 潘某某
完成时间: 2020.12.25
教 务 处 制
要求:
选择一个常用的软件,找出其中使用到设计模式的场景,根据设计模式应用场景、特点分析该功能符合设计模式原因,完成代码设计。
(在以下范围内选择4种设计模式,选择的模式不可重复。)
可选择模式包括:单例模式、工厂方法模式、抽象工厂模式、建造者模式、适配器模式、外观模式、代理模式、命令模式、观察者模式、策略模式、模板方法模式、状态模式)
设计模式名称
系统优化
得分
策略模式
开发过程中将可变的操作独立出来,变成策略。将具体策略设计成原有类的成员变量,将方法参数化,改变原有系统僵硬的设计,对于原有功能可以使用成员变量赋值的方式灵活改变。测试显示,使用策略模式,程序具有了更好地灵活性,符合开闭原则。
总分
选择软件名称: 植物大战僵尸游戏
1.模式名称: 策略模式
需求如下:按照问题顺序对选择的设计模式进行说明。
(1)使用何种模式,完成什么功能;(2)为什么使用这种模式?
(1)使用策略模式,完成植物大战僵尸游戏中僵尸的设计需求。在游戏中要求僵尸都可以移动、具有外观显示方式,每个僵尸具有不同的攻击、不同的跳跃方式。
(2)在实际开发中发现几种僵尸具有相同的攻击、几种僵尸具有相同的跳跃,在游戏进行中僵尸的攻击和跳跃方式会随着情景而改变,为了给僵尸灵活转变攻击、跳跃方式,采用了策略模式。
代码如下:(要求在程序中加入注释,在注释中说明设计模式中的各个角色分别是什么?)
//攻击行为类接口:IAttackBehavior及实现类
public interface IAttackBehavior {
void attack();
}
public class NoAttack implements IAttackBehavior {
@Override
public void attack() {
System.err.println("I use Noattack");
}
}
public class ReinforceAttack implements IAttackBehavior {
@Override
public void attack() {
System.err.println("I use Reinforce attack");
}
}
public class SuperAttack implements IAttackBehavior {
@Override
public void attack() {
System.err.println("I use Super attack");
}
}
//速度接口IJumpBehavior及子类:
public interface IJumpBehavior {
void Jump();
}
public class HeightJumpimplements IJumpBehavior{
@Override
public void Jump() {
System.err.println("My Jump is height!");
}
}
public class NormalJump implements IJumpBehavior{
@Override
public void Jump() {
System.err.println("My Jump is Normal!");
}
}
public class LowJump implements IJumpBehavior{
@Override
public void Jump() {
System.err.println("My Jump is low!");
}
}
//抽象类Character及子类
public abstract class Character {//抽象类
public IAttackBehavior myAttack;
public IJumpBehavior myJump;
void move(){
System.err.println("move");
}
void attack(){
myAttack.attack();
}
void Jump(){
myJump.Jump();
}
abstract void display();
}
//环境子类
public class RedHeadZombie extends Character {//红头僵尸
public RedHeadZombie() {
myAttack = new SuperAttack ();
myJump = new NormalJump();
}
@Override
void display() {
System.err.println("My head is Red");
}
}
public class NoAttackZombie extends Character {//无攻击力僵尸
public RedHeadZombie() {
myAttack = new NoAttack ();
myJump = new HeightJump();
}
void display() {
System.err.println("I'm NoAttackZombie");
}
}
//测试类
public class T2 {
public static void main(String[] args) {
Character z1=new new RedHeadZombie();
z1.attack();
z1.Jump();
}
}
适用场景截图(该设计模式应用在软件中的哪个功能,截取相关界面)
/
以上为《设计模式课程设计报告》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。