今天给大家介绍设计模式:策略模式
一.策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用
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.总结
优点:动态改变算法或行为
缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类,必须对每一个算法了解
分享到:
相关推荐
Java 设计模式之策略模式与状态模式 策略模式是 Java 中的一种设计模式,它主要用于解决系统与第三方接口进行数据交互的问题。当系统需要与多种格式的数据进行交互时,使用策略模式可以很好地解决这个问题。例如,...
在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。 首先,策略模式的核心是策略接口和实现策略接口的具体策略类。在Java中,我们可以...
以下是一个简单的Java策略模式实现示例: ```java // 抽象策略 public interface Strategy { void execute(); } // 具体策略A public class StrategyA implements Strategy { @Override public void execute() ...
在Java中,策略模式允许我们定义一组算法或策略,并将每个策略封装为一个类,使得它们可以互换,而不会影响到客户端代码。这种模式的核心在于"策略",即一系列可互相替换的算法或行为。 策略模式的主要优点包括: ...
在这个名为"java策略模式小例子"的项目中,我们可以预期看到一个简单的示例,演示了如何在Java中应用策略模式。`Strategy(Game)`可能包含了一些不同的策略类,每个类代表一种特定的游戏策略,以及一个上下文(Context...
javase 设计模式的strategy pattern《JAVA与模式》之策略模式详解
Java策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常涉及到定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。这个"java策略模式示例....
本篇文章将深入探讨两种重要的设计模式:策略模式和模板模式。通过理解这两种模式,开发者可以更好地组织代码,提高代码的灵活性和可扩展性。 ### 策略模式 策略模式是一种行为设计模式,它使你能在运行时改变对象...
在Java中,策略模式可以帮助我们更好地管理代码,避免过度依赖继承,提高代码的灵活性和可扩展性。 首先,策略模式的定义是:将算法族(一组相关的算法)封装到各自独立的类中,使它们可以互相替换。每个算法都可以...
在Java中,策略模式通过定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换,让算法独立于使用它的客户而变化。这种模式通常用于处理多种可能的算法或行为选择场景,避免硬编码,增加代码的灵活性和可...
在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。这种模式的核心是策略接口和实现策略的类。 策略模式的关键组成部分包括: 1. **...
策略模式是设计模式的一种,属于行为模式,它在Java开发中广泛应用,主要解决的是当算法有多种变化,而这些变化需要以不同的方式处理时的问题。通过策略模式,我们可以将算法封装在独立的策略类中,使得算法的变化...
在这个“java设计模式-策略模式”的示例中,我们将深入探讨如何使用策略模式来实现一个简单的超市促销系统。 策略模式的核心思想是定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换。这使得算法的...
Java策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常通过定义一系列算法类并让它们之间可以互换来实现。这种模式的关键在于将算法的使用与算法的实现分离开来,使得系统能够...
在这个"JAVA设计模式demo之策略模式"的示例中,你可能会看到以下的代码结构: 1. **策略接口**:`Strategy.java` ```java public interface Strategy { void execute(); } ``` 这个接口定义了一个通用的行为...
策略模式是设计模式的一种,它在Java编程中广泛应用于处理算法的封装和选择。策略模式的核心思想是将算法封装到不同的类中,使得算法的变化独立于使用它的客户端。这种模式可以提供更多的灵活性,使得程序在运行时...
在提供的"java策略模式源代码"中,我们可以预期包含以下几个关键组成部分: 1. **策略接口(Strategy Interface)**:这是所有策略类都需要实现的接口,定义了一组相关或相互排斥的操作。例如,`SortingStrategy` ...
在Java中,策略模式通常涉及定义一系列算法,将每个算法封装到具有共同接口的独立类中,使得它们可以相互替换。这样做的主要好处是算法的变化不会影响到使用算法的客户。 策略模式的核心组成部分包括上下文...
在Java中,策略模式通常用于将算法封装到不同的类中,使得可以根据需要动态选择并应用这些算法。本示例将详细介绍如何通过两种方法实现策略模式:一种是通过Map存储方式,另一种是通过配置文件加反射方式。 首先,...
在"JAVA策略模式实现"的例子中,我们可能会有一个`Strategy`接口或抽象类,它定义了一组通用的操作,例如处理邮件的策略。然后,我们可以创建多个具体的策略类,如`SimpleMailStrategy`、`PriorityMailStrategy`和`...