策略模式实验报告Word文件下载.doc
《策略模式实验报告Word文件下载.doc》由会员分享,可在线阅读,更多相关《策略模式实验报告Word文件下载.doc(4页珍藏版)》请在冰豆网上搜索。
策略模式让算法独立于使用它的客户而独立变化。
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()
{
Queen:
publicclassKnightextendsCharacter
publicKnight()
weaponBehavior=newBowAndArrowBehavior();
Knight:
publicclassTrollextendsCharacter
publicTroll()
weaponBehavior=newAxeBehavior();
/
Troll:
publicinterfaceWeaponBehavior
publicvoiduseWeapon();
publicclassAxeBehaviorimplementsWeaponBehavior
publicvoiduseWeapon()
System.out.println("
!
(AxeBehavior)"
publicclassBowAndArrowBehaviorimplementsWeaponBehavior
publicvoiduseWeapon()
System.out.println("
!
(BowAndArrowBehavior)"
}
publicclassKnifeBehaviorimplementsWeaponBehavior
publicvoiduseWeapon()
System.out.println("
(KnifeBehavior)"
publicclassSwordBehaviorimplementsWeaponBehavior
(SwordBehavior)"
运行结果:
四、心得体会
创建类的实例对象:
通常我们的做法是Aa=newA();
实际上模式也可以用来实例化类的对象。
我们之所以提出模式是因为在某些情况下,例如在实例化对象是要初始化的数据太多,或者其他原因比如访问数据库等。
如果把这些东西写进构造函数里会使你的代码看起来就很难看还很容易出错。
这时我们引入了模式:
我们将创建实例的工作与使用实例的工作分开,也就是说,让创建实例所需要的大量初始化工作从的构造函数中分离出去。