ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 软件工程 >> 设计模式——策略模式

设计模式——策略模式(1/3)

来源:网络整理     时间:2015-12-17     关键词:设计模式

本篇文章主要介绍了"设计模式——策略模式",主要涉及到设计模式方面的内容,对于软件工程感兴趣的同学可以参考一下: 对设计模式的理解模式不是代码,而是针对设计问题的通用解决方案。你可以把它们应用到特定的应用中;设计模式告诉我们如何组织类和对象以及解决某种问题。想要数量使用设计...

设计模式的理解

模式不是代码,而是针对设计问题的通用解决方案。你可以把它们应用到特定的应用中;设计模式告诉我们如何组织类和对象以及解决某种问题。

想要数量使用设计模式需要对封装继承多态有一个全面的了解,熟悉常用的OO设计原则。

使用模式最好的方式是:把模式装进脑子里,然后在你的设计和已有的应用中,寻找何处可以使用它们,以往是代码复用,现在是经验复用。

策略模式

定义:定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

下面使用一个实际开发中的例子来分析策略模式,假如有这样一个需求,在一个动作冒险游戏中,有四个游戏角色,分别是:Queen(王后),King(国王),Troll(巨魔),Knight(骑士);每个角色都可以使用不同的武器,例如匕首,弓箭,斧头,宝剑,每个角色一次只能使用一种武器,但是可以在游戏的过程中切换武器。

  首先分析行为,角色们都可以使用武器,使用武器算是角色的一种通用的行为,所以首先定义一个WeaponBehavior武器使用接口,里面只有一个useWeapon()方法:

publicinterface WeaponBehavior {
    publicvoid useWeapon();
}

每一个角色都可以使用不同的武器,所以把每个武器的具体使用方式放在单独的类中,一个类就代表一种使用方式,这些类全部实现WeaponBehavior接口(这是关键的一步,我们在这里就相当于把会变化的部分同不变的部分分开了)。

publicclass AxeBehavior implements WeaponBehavior {

    @Override
    publicvoid useWeapon() {
        // TODO Auto-generated method stub        System.out.println("实现用斧头劈砍!");
    }

}

publicclass BowAndArrowBehavior implements WeaponBehavior {

    @Override
    publicvoid useWeapon() {
        // TODO Auto-generated method stub        System.out.println("实现用弓箭射击!");
    }

}

publicclass KnifeBehavior implements WeaponBehavior {

    @Override
    publicvoid useWeapon() {
        // TODO Auto-generated method stub        System.out.println("实现用匕首刺杀!");
    }

}

相关图片

相关文章