策略模式实验报告.doc

上传人:b****9 文档编号:125750 上传时间:2022-10-04 格式:DOC 页数:4 大小:328KB
下载 相关 举报
策略模式实验报告.doc_第1页
第1页 / 共4页
策略模式实验报告.doc_第2页
第2页 / 共4页
策略模式实验报告.doc_第3页
第3页 / 共4页
策略模式实验报告.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

策略模式实验报告.doc

《策略模式实验报告.doc》由会员分享,可在线阅读,更多相关《策略模式实验报告.doc(4页珍藏版)》请在冰豆网上搜索。

策略模式实验报告.doc

《软件开发实践》实验报告

实验一策略模式

一、实验目的:

1.理解策略模式的基本理论

2.掌握策略模式的使用方法

二、实验内容:

1.模式定义:

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。

策略模式让算法独立于使用它的客户而独立变化。

2.模式练习:

设一个网上书店,该系统中所有的计算机类图书每本都有10%的折扣,所有的语言类图书每本都有两元的折扣,小说类图书每100元有10元的折扣。

3.

三、实验结果

1.开发环境:

VS.2008

2.主要源代码:

publicabstractclassCharacter

{

WeaponBehaviorweaponBehavior;

publicCharacter(){};

publicabstractvoiddisplay();

publicvoidfight()//委托给行为类

{

weaponBehavior.useWeapon();

}

publicvoidsetWeaponBehavior(WeaponBehaviorwb){

weaponBehavior=wb;

}

}

publicclassKingextendsCharacter

{

publicKing()

{

publicvoiddisplay()

{

System.out.print("King:

");

}

}

publicclassQueenextendsCharacter

{

publicQueen()

{

weaponBehavior=newKnifeBehavior();

}

publicvoiddisplay()

{

System.out.print("Queen:

");

}

}

publicclassKnightextendsCharacter

{

publicKnight()

weaponBehavior=newBowAndArrowBehavior();

}

publicvoiddisplay()

{

System.out.print("Knight:

");

}

}

publicclassTrollextendsCharacter

{

publicTroll()

{

weaponBehavior=newAxeBehavior();/

}

publicvoiddisplay()

{

System.out.print("Troll:

");

}

}

publicinterfaceWeaponBehavior

{

publicvoiduseWeapon();

}

publicclassAxeBehaviorimplementsWeaponBehavior

{

publicvoiduseWeapon()

{

System.out.println("!

(AxeBehavior)");

}

}

publicclassBowAndArrowBehaviorimplementsWeaponBehavior

{

publicvoiduseWeapon()

{

System.out.println("!

(BowAndArrowBehavior)");

}

}

publicclassKnifeBehaviorimplementsWeaponBehavior

{

publicvoiduseWeapon()

{

System.out.println("!

(KnifeBehavior)");

}

}

publicclassSwordBehaviorimplementsWeaponBehavior

{

publicvoiduseWeapon()

{

System.out.println("!

(SwordBehavior)");

}

}

运行结果:

四、心得体会

创建类的实例对象:

通常我们的做法是Aa=newA();实际上模式也可以用来实例化类的对象。

我们之所以提出模式是因为在某些情况下,例如在实例化对象是要初始化的数据太多,或者其他原因比如访问数据库等。

如果把这些东西写进构造函数里会使你的代码看起来就很难看还很容易出错。

这时我们引入了模式:

我们将创建实例的工作与使用实例的工作分开,也就是说,让创建实例所需要的大量初始化工作从的构造函数中分离出去。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1