一.策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用
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 中的一种设计模式,它主要用于解决系统与第三方接口进行数据交互的问题。当系统需要与多种格式的数据进行交互时,使用策略模式可以很好地解决这个问题。例如,...
策略模式和代理模式是设计模式中的两种常见模式,它们在软件开发中扮演着重要的角色,尤其是在JavaScript中,这两种模式提供了更加灵活和可维护的代码结构。 策略模式(Strategy Pattern)是一种行为设计模式,它...
文档可能会给出一些生活中的例子,比如交通规则(直行、左转、右转)来帮助理解策略模式的基本思想。 而"StrategyProject"可能是一个Java项目,包含了策略模式的实例代码。在这个项目中,可能定义了一个策略接口,...
在"策略模式封装的几个加密解密算法源码"中,我们主要关注的是如何使用策略模式来封装常见的加密解密算法,如BASE64和MD5。 1. **BASE64编码**:BASE64是一种用于将二进制数据编码为ASCII字符的编码方式,以便在...
在软件设计模式的世界里,"简单工厂模式"、"代理模式"和"策略模式"都是经典的设计模式,它们各自有着独特的应用场景和优缺点。本文将深入解析这三种模式的原理和区别,帮助读者理解它们在实际开发中的运用。 首先,...
在本篇中,我们将深入探讨“策略模式”,这是一种行为设计模式,它使算法族能够互换,使得代码能根据环境或策略的不同选择不同的行为。 策略模式的核心思想是将算法封装在独立的类中,使得它们可以互相替换。这种...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,通过定义接口或抽象类来封装一系列的算法,并将每个算法都封装为一个类,使得它们可以互换,从而使程序可以根据不同场景选择不同的算法。在...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或策略来执行不同操作的情况。策略模式提供了一种将算法族封装到各自独立的类中,并让它们之间可以互相...
多轴机电复合分布式驱动车辆转向半径模式控制策略的知识点主要包括以下几个方面: 1. 多轴轮式车辆转向技术的发展背景:随着现代战场环境对机动性的要求提高,对多轴轮式车辆的最小转向半径战术技术指标提出了更高...
本文主要探讨了模式转换下,分布式电源接入微电网时的控制策略问题,并通过建立微电网仿真模型进行分析,以验证控制策略选择的正确性。以下是对文章中主要知识点的详细梳理: 1. 分布式电源及微电网的建模和控制...
【EB創新策略模式(傅博士)】是一种针对企业电子化(e化)的创新方法论,旨在通过互联网技术和信息技术的应用,重塑企业的核心流程,提升经营绩效。傅新彬教授指出,这种模式着重于产业环境的分析,企业电子化的必要...
本文主要探讨了云计算环境下电信运营商商业模式的创新策略,内容涵盖云计算给电信运营商带来的机遇与挑战,以及运营商在传统商业模式上面临的困境和创新策略。 一、云计算带来的机遇与挑战 云计算技术的特点是资源...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Headfirst Note中,策略模式被用来处理不同类型的鸭子(Duck)的行为。这个压缩包包含了一个名为"Duck1.jude"的文件,这可能是一个用某种特定格式...
a) 企业平台化转型策略:企业应选择合适的平台经济模式,变革传统的组织架构,并培养适应平台经济模式的新技能。这些变化有助于企业在互联网3.0时代中生存和发展。 b) 政府监管策略:政府应当鼓励平台经济的发展,...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在这个例子中,我们将讨论如何使用策略模式来实现一个支持对不同大小文件排序的小程序。这个程序需要处理从小到大,从几百MB到几TB的文件,因此需要...
本文主要探讨的是双模式微电网逆变器的控制策略,这是一种能够适应不同运行条件的智能控制技术。 首先,我们要理解微电网的两种基本运行模式:并网模式和孤岛模式。并网模式下,微电网与主电网相连,逆变器需遵循...
为了顺利推进盈利模式转型,建议我国商业银行维持适度的利差收入,发展资本节约型业务,实施差异化竞争策略。这包括优化产品和服务,扩大非利息收入来源,提升服务质量,以及强化风险管理,以适应新的监管环境和市场...
【财富管理行业2022年春季策略报告】 在2022年的春季,财富管理行业面临新的机遇和挑战。报告指出,当前行业的主要特点是权益市场波动性加大,居民的资产配置结构正变得更为多元化。权益产品的收益率低于市场预期,...
承德市仪器仪表行业的电商运营现状、存在的问题、行业电商运营模式以及电商运营策略 一、承德市仪器仪表行业电商运营现状 承德市是中国仪器仪表生产和销售的重要地区,拥有超过350家仪器仪表企业。企业在电商运营...
在本文中,我们将深入探讨两个关键的设计模式:策略模式和装饰者模式,并结合生活中的实例来帮助理解它们。 首先,让我们来了解策略模式。策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在日常生活...