`

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.总结
优点:动态改变算法或行为
缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类,必须对每一个算法了解
 
分享到:
评论

相关推荐

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

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

    Java 设计模式 策略模式

    在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。 首先,策略模式的核心是策略接口和实现策略接口的具体策略类。在Java中,我们可以...

    java 策略模式的小例子

    以下是一个简单的Java策略模式实现示例: ```java // 抽象策略 public interface Strategy { void execute(); } // 具体策略A public class StrategyA implements Strategy { @Override public void execute() ...

    Java策略模式+案例

    在Java中,策略模式允许我们定义一组算法或策略,并将每个策略封装为一个类,使得它们可以互换,而不会影响到客户端代码。这种模式的核心在于"策略",即一系列可互相替换的算法或行为。 策略模式的主要优点包括: ...

    java策略模式小例子

    在这个名为"java策略模式小例子"的项目中,我们可以预期看到一个简单的示例,演示了如何在Java中应用策略模式。`Strategy(Game)`可能包含了一些不同的策略类,每个类代表一种特定的游戏策略,以及一个上下文(Context...

    《JAVA与模式》之策略模式

    javase 设计模式的strategy pattern《JAVA与模式》之策略模式详解

    java策略模式示例.zip

    Java策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常涉及到定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。这个"java策略模式示例....

    java设计模式之策略模式与模板模式

    本篇文章将深入探讨两种重要的设计模式:策略模式和模板模式。通过理解这两种模式,开发者可以更好地组织代码,提高代码的灵活性和可扩展性。 ### 策略模式 策略模式是一种行为设计模式,它使你能在运行时改变对象...

    java_策略模式

    在Java中,策略模式可以帮助我们更好地管理代码,避免过度依赖继承,提高代码的灵活性和可扩展性。 首先,策略模式的定义是:将算法族(一组相关的算法)封装到各自独立的类中,使它们可以互相替换。每个算法都可以...

    策略模式在实际项目中的应用二

    在Java中,策略模式通过定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换,让算法独立于使用它的客户而变化。这种模式通常用于处理多种可能的算法或行为选择场景,避免硬编码,增加代码的灵活性和可...

    Java策略模式Demo

    在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。这种模式的核心是策略接口和实现策略的类。 策略模式的关键组成部分包括: 1. **...

    Java开发模式之策略模式

    策略模式是设计模式的一种,属于行为模式,它在Java开发中广泛应用,主要解决的是当算法有多种变化,而这些变化需要以不同的方式处理时的问题。通过策略模式,我们可以将算法封装在独立的策略类中,使得算法的变化...

    java设计模式-策略模式

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

    java 策略模式demo

    Java策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常通过定义一系列算法类并让它们之间可以互换来实现。这种模式的关键在于将算法的使用与算法的实现分离开来,使得系统能够...

    JAVA设计模式demo之策略模式

    在这个"JAVA设计模式demo之策略模式"的示例中,你可能会看到以下的代码结构: 1. **策略接口**:`Strategy.java` ```java public interface Strategy { void execute(); } ``` 这个接口定义了一个通用的行为...

    java 策略模式

    策略模式是设计模式的一种,它在Java编程中广泛应用于处理算法的封装和选择。策略模式的核心思想是将算法封装到不同的类中,使得算法的变化独立于使用它的客户端。这种模式可以提供更多的灵活性,使得程序在运行时...

    java策略模式源代码

    在提供的"java策略模式源代码"中,我们可以预期包含以下几个关键组成部分: 1. **策略接口(Strategy Interface)**:这是所有策略类都需要实现的接口,定义了一组相关或相互排斥的操作。例如,`SortingStrategy` ...

    设计模式之策略模式Java实现和类设计图

    在Java中,策略模式通常涉及定义一系列算法,将每个算法封装到具有共同接口的独立类中,使得它们可以相互替换。这样做的主要好处是算法的变化不会影响到使用算法的客户。 策略模式的核心组成部分包括上下文...

    策略模式的实现,通过反射

    在Java中,策略模式通常用于将算法封装到不同的类中,使得可以根据需要动态选择并应用这些算法。本示例将详细介绍如何通过两种方法实现策略模式:一种是通过Map存储方式,另一种是通过配置文件加反射方式。 首先,...

    JAVA策略模式实现

    在"JAVA策略模式实现"的例子中,我们可能会有一个`Strategy`接口或抽象类,它定义了一组通用的操作,例如处理邮件的策略。然后,我们可以创建多个具体的策略类,如`SimpleMailStrategy`、`PriorityMailStrategy`和`...

Global site tag (gtag.js) - Google Analytics