`
yufenfei
  • 浏览: 801150 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java-策略模式

阅读更多

     策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 

 

     策略模式的好处在于你可以动态的改变对象的行为。

 
     设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++z中可以用虚类),然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。下面是一个例子。 


      策略模式属于对象行为型模式,主要针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。通常,策略模式适用于当一个应用程序需要实现一种特定的服务或者功能,而且该程序有多种实现方式时使用。


    

     (策略模式静态图)

 

   策略模式中有三个对象:
(1)       环境对象:该类中实现了对抽象策略中定义的接口或者抽象类的引用。
(2)       抽象策略对象:它可由接口或抽象类来实现。
(3)       具体策略对象:它封装了实现同不功能的不同算法。
利用策略模式构建应用程序,可以根据用户配置等内容,选择不同有算法来实现应用程序的功能。具体的选择有环境对象来完成。采用这种方式可以避免由于使用条件语句而带来的代码混乱,提高应用程序的灵活性与条理性。


/* 
这是一个表现僧人和道士的程序,僧人光头,使用棍子做武器,道士长小胡子,使用拂尘作武器 
*/ 

public interface DisplayInte {
    public void display();

}

public interface WeaponInte {
    public void wuqi();
}

public class daoshiDisplayImpl implements DisplayInte {

    public void display() {
        // TODO Auto-generated method stub
        System.out.println("道士是有头发的!!!");
    }

}
public class heshangDisplayImpl implements DisplayInte {

    public void display() {
        // TODO Auto-generated method stub
        System.out.println("和尚没有头发的");
    }

}
public class daoshiWeaponImpl implements WeaponInte {

    public void wuqi() {
        // TODO Auto-generated method stub
            System.out.println("道士使用的武器是拂尘!!!");
    }

}
public class heshangWeaponImpl implements WeaponInte {

    public void wuqi() {
        // TODO Auto-generated method stub
        System.out.println("和尚拿的武器是法仗!!!");
    }

}
public class Daoshi extends Role {

    public Daoshi() {
        this.display=new daoshiDisplayImpl();
        this.weapon=new daoshiWeaponImpl();
        // TODO Auto-generated constructor stub
    }

}

public class Heshang extends Role {

    public Heshang() {
        this.display=new heshangDisplayImpl();
        this.weapon=new heshangWeaponImpl();
        // TODO Auto-generated constructor stub
    }

}


public class Role {
    public String name;
    public int age;
    public DisplayInte display;
    public WeaponInte weapon;
    public void display()
    {       
        display.display();
    }
    public void weapon()
    {
        weapon.wuqi();
    }
    public void changeWeapon()
    {
        if(this instanceof Daoshi)
        {
            weapon=new heshangWeaponImpl();
        }
        else
        {
            weapon=new daoshiWeaponImpl();
        }
    }
    
    
}

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Role oDaoshi=new Daoshi();
        Role oHeshang=new Heshang();
        oDaoshi.display();
        oDaoshi.weapon();
        oHeshang.display();
        oHeshang.weapon();
        oDaoshi.changeWeapon();
        oDaoshi.display();
        oHeshang.changeWeapon();
        oHeshang.display();
    }

}

 

  • 大小: 12.8 KB
分享到:
评论

相关推荐

    JAVA-设计模式-行为型模式-策略模式

    JAVA-设计模式-行为型模式-策略模式

    java设计模式-策略模式

    在这个“java设计模式-策略模式”的示例中,我们将深入探讨如何使用策略模式来实现一个简单的超市促销系统。 策略模式的核心思想是定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换。这使得算法的...

    JAVA设计模式例程-策略模式

    在这个“JAVA设计模式例程-策略模式”的压缩包中,我们可以深入探讨策略模式的原理及其应用。 策略模式的核心思想是定义一系列算法,并将每一个算法封装起来,使它们可以相互替换。策略对象的使用让算法的变化独立...

    Java Design Demo--策略模式

    - **java滤镜项目-策略模式.zip**:这个文件是一个Java项目,实现了滤镜效果的策略模式。解压后,我们可以看到项目的目录结构,包括源代码、测试用例以及可能的README文件,说明如何运行和理解代码。 - **策略模式...

    设计模式--策略模式java例子

    在Java中,策略模式通常用于替换硬编码的条件语句,使代码更加灵活、可扩展和易于维护。下面我们将详细探讨策略模式的核心概念、实现方式以及在实际开发中的应用。 ### 一、策略模式的概念 策略模式定义了一系列...

    java设计模式--策略模式

    策略模式是Java设计模式中的一种行为模式,它允许在运行时选择算法或策略,从而提供了更大的灵活性。在HeadFirst的《设计模式》一书中,第一章深入浅出地讲解了这一模式,通过实例帮助读者理解其核心概念和应用场景...

    Java-设计模式.zip

    - 策略模式:定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换,策略对象改变算法的使用方式。 - 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法...

    java---------设计模式

    - 策略模式:定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换。 - 模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。 以上这些设计模式在实际开发中有着广泛的应用,...

    java常用设计模式-策略模式

    Java 策略模式详解 策略模式是一种行为型设计模式,它允许您定义一系列算法,将每个算法封装起来,并使它们可以互换使用。这种模式使得算法可以独立于使用它们的客户端而变化。在 Java 中,策略模式通常由一个接口...

    Java设计模式教程-策略模式Java开发Java经验技

    策略模式是Java设计模式中的一种行为模式,它允许在运行时改变对象的行为。在Java开发过程中,策略模式常被用来封装一系列算法,并使它们可以互相替换,从而使算法的变化独立于使用算法的客户。这种模式的核心在于...

    Java设计模式-策略模式

    总结来说,Java设计模式中的策略模式是一种非常实用的设计模式,它允许我们在运行时选择和改变算法,提高了代码的可维护性和灵活性。通过观看厉风行老师的教程,你可以深入理解策略模式的原理,并将其运用到实际项目...

    设计模式--策略模式StrategyPattern

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来执行不同算法的情况。策略模式提供了一种将算法族封装到各自独立的类中,并在运行时选择具体...

    实验一:鸭子游戏-策略模式.rar

    "实验一:鸭子游戏-策略模式.rar"这个压缩包文件显然是围绕Java编程语言中的策略模式来展开的一个教学实验。在这个实验中,我们将深入理解策略模式的核心概念、应用场景以及如何在实际编码中应用。 策略模式是一种...

    55-Java设计模式之策略模式与状态模式1

    Java 设计模式之策略模式与状态模式 策略模式是 Java 中的一种设计模式,它主要用于解决系统与第三方接口进行数据交互的问题。当系统需要与多种格式的数据进行交互时,使用策略模式可以很好地解决这个问题。例如,...

    计算机后端-Java-图解java设计模式143 策略模式(4)-Arr.avi

    计算机后端-Java-图解java设计模式143 策略模式(4)-Arr.avi

    Java 设计模式-策略模式(Strategy)Android讲解

    在Java中,策略模式是通过定义一系列算法,并将每个算法封装起来,使它们可以相互替换,让算法独立于使用它的客户而变化。这种模式在Android开发中非常常见,尤其是在处理不同场景下需要动态改变行为的情况。 首先...

    计算机后端-Java-图解java设计模式142 策略模式(3).avi

    计算机后端-Java-图解java设计模式142 策略模式(3).avi

    计算机后端-Java-图解java设计模式141 策略模式(2).avi

    计算机后端-Java-图解java设计模式141 策略模式(2).avi

    计算机后端-Java-图解java设计模式140 策略模式(1).avi

    计算机后端-Java-图解java设计模式140 策略模式(1).avi

Global site tag (gtag.js) - Google Analytics