`

Java-策略模式

 
阅读更多

Java-策略模式

 今天给大家介绍第三个设计模式:策略模式

一.策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用

UML示意图



 

二.组成部分:

1. 环境角色:持有一个策略类引用

2. 抽象策略

3. 具体策略:相关的算法或操作

三.代码例子

1. 抽象策略

package com.eekq.strategy;

 

public interface IStrategy {

 

    /**策略方法*/

    public abstract double add();

}

2. 具体策略,这里我以两个具体策略为例

package com.eekq.strategy;

 

public class ConcreteStrategy1 implements IStrategy {

 

    /**示意性算法*/

    public double add() {

        // TODO 自动生成方法存根

        System.out.println(this.getClass().getName() + "的加法运算");

        return 0;

    }

 

}

package com.eekq.strategy;

 

public class ConcreteStrategy2 implements IStrategy {

 

    public double add() {

        // TODO 自动生成方法存根

        System.out.println(this.getClass().getName() + "的加法运算");

        return 0;

    }

 

}

3.环境角色

package com.eekq.strategy;

 

public class Context {

    /**环境角色类*/

    private IStrategy strategy;

 

    public Context(IStrategy strategy) {

        this.strategy = strategy;

    }

 

    /**策略方法*/

    public double add() {

        this.strategy.add();

        return 0;

    }

}

4.客户端调用

package com.eekq.strategy;

 

public class Main {

 

    /**

     *@paramargs

     */

    public static void main(String[] args) {

        // TODO 自动生成方法存根

        Context context = new Context(new ConcreteStrategy1());

        context.add();//执行算法1

        context = new Context(new ConcreteStrategy2());

        context.add();//执行算法2

    }

 

}

5.执行结果:

com.eekq.strategy.ConcreteStrategy1的加法运算

com.eekq.strategy.ConcreteStrategy2的加法运算

6.总结

优点:动态改变算法或行为

缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类,必须对每一个算法了解

 

<!--EndFragment-->

  • 大小: 8.2 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