设计模式课程设计报告

本文由用户“ameri_b”分享发布 更新时间:2023-09-18 19:43:42 举报文档

以下为《设计模式课程设计报告》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

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();

}

}





适用场景截图(该设计模式应用在软件中的哪个功能,截取相关界面)



/





以上为《设计模式课程设计报告》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览