1、策略模式让算法独立于使用它的客户而独立变化。2. 模式练习:设一个网上书店,该系统中所有的计算机类图书每本都有10%的折扣,所有的语言类图书每本都有两元的折扣,小说类图书每100元有10元的折扣。 3.三、 实验结果1. 开发环境:VS. 20082. 主要源代码:public abstract class Character WeaponBehavior weaponBehavior; public Character(); public abstract void display(); public void fight() /委托给行为类 weaponBehavior.useWeapon
2、(); public void setWeaponBehavior(WeaponBehavior wb) weaponBehavior = wb;public class King extends Characterpublic King() public void display() System.out.print(King: );public class Queen extends Character public Queen() weaponBehavior = new KnifeBehavior(); public void display() Queen:public class
3、Knight extends Characterpublic Knight() weaponBehavior = new BowAndArrowBehavior(); Knight:public class Troll extends Characterpublic Troll() weaponBehavior = new AxeBehavior(); /Troll:public interface WeaponBehavior public void useWeapon();public class AxeBehavior implements WeaponBehaviorpublic vo
4、id useWeapon() System.out.println(! (AxeBehavior)public class BowAndArrowBehavior implements WeaponBehavior public void useWeapon()System.out.println(! (BowAndArrowBehavior) public class KnifeBehavior implements WeaponBehavior public void useWeapon() System.out.println( (KnifeBehavior)public class SwordBehavior implements WeaponBehavior (SwordBehavior)运行结果:四、 心得体会创建类的实例对象:通常我们的做法是A a=new A();实际上模式也可以用来实例化类的对象。我们之所以提出模式是因为在某些情况下,例如在实例化对象是要初始化的数据太多,或者其他原因比如访问数据库等。如果把这些东西写进构造函数里会使你的代码看起来就很难看还很容易出错。这时我们引入了模式:我们将创建实例的工作与使用实例的工作分开, 也就是说,让创建实例所需要的大量初始化工作从的构造函数中分离出去。