`
leoyu
  • 浏览: 12361 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

第三个设计模式:策略模式

阅读更多

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

一.策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用
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.总结
优点:动态改变算法或行为
缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类,必须对每一个算法了解
作者:飞行鱼 QQ:6868861 推荐J2EE群:7715552


 

分享到:
评论

相关推荐

    设计模式:可复用面向对象软件的基础--详细书签版

    第3章 创建型模式 54 3.1 abstract factory(抽象工厂)— 对象创建型模式 57 3.2 builder(生成器)—对象创建型 模式 63 3.3 factory method(工厂方法)— 对象创建型模式 70 3.4 prototype(原型)—对象...

    模式设计之策略模式

    策略模式\第三个设计模式:策略模式 - leoyu - JavaEye技术网站.htm

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

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

    设计模式可复用面向对象软件的基础(c++).pdf

    - **第3章 创建型模式**:介绍了一系列用于创建对象的模式,如单例模式、工厂方法模式等,这些模式帮助管理对象的创建过程,增强代码的灵活性和可扩展性。 - **第4章 结构型模式**:涵盖了用于组合类和对象以形成更...

    设计模式——基于C#的工程化实现及扩展

    这一部分主要是为了让读者对设计模式有一个基本的认识,包括设计模式的概念、历史背景及其在软件开发过程中的重要性。通过这一部分的学习,读者可以了解到设计模式是如何帮助开发者更好地解决常见的软件设计问题,...

    设计模式相关资料设计模式相关资料

    - 策略模式:定义一组算法,并将每一个算法封装起来,使它们可以互相替换。 - 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - 访问者模式:表示对一个对象结构进行某种操作,同时又不想...

    新版设计模式手册 - C#设计模式(第二版)

    《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...

    设计模式之蝉

    设计模式通常被划分为三个主要类别:创建型模式、结构型模式和行为型模式。 《设计模式之蝉》这本书可能是对设计模式的一种形象化描述,或是以蝉为比喻来讲解设计模式的概念。蝉在地下蛰伏多年,最终破土而出,仅...

    重学java的设计模式

    1. 适配器模式:将两个不兼容的接口转换为可以协同工作的接口,常用于集成第三方库或旧系统。 2. 装饰器模式:动态地给对象添加一些额外的职责,提供了比继承更多的灵活性。 3. 代理模式:为其他对象提供一种代理以...

    设计模式概述及23种设计模式

    16. 策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 17. 状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它...

    设计模式课程每章ppt(共27章).zip

    └── 设计模式 ...├── 第3章_设计模式概述.ppt ├── 第4章_简单工厂模式.ppt ├── 第5章_工厂方法模式.ppt ├── 第6章_抽象工厂模式.ppt ├── 第7章_建造者模式.ppt ├── 第8章_原型模式.ppt

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    设计模式可复用面向对象软件的基础.zip

    第3章 创建型模式 54 3.1 Abstract Factory(抽象工厂)— 对象创建型模式 57 3.2 Builder(生成器)—对象创建型 模式 63 3.3 Factory Method(工厂方法)— 对象创建型模式 70 3.4 Prototype(原型)—对象创建型 ...

    Head first 设计模式 第一章 策略模式 pdf + 源代码

    在《Head First设计模式》的第一章中,作者可能通过生动的示例和易于理解的图表,解释了如何在实际问题中识别策略模式的应用场景,以及如何有效地实现和使用这个模式。书中可能涵盖了以下内容: - 策略模式的基本...

    详解SpringBoot结合策略模式实战套路

    策略模式是一种行为设计模式,它允许开发者定义一些策略族,分别封装起来,每一个策略中的算法具有一定的独立性,分别在不同的上下文中完成不同的任务。策略模式通常由三个部分组成:策略接口、策略实现类、环境上...

    Head First 设计模式 JAVA源码

    所有的设计模式Java实现。 第一讲:简单工厂模式 第二讲:工厂方法模式 第三讲:抽象工厂模式 第四讲:工厂模式在开发中的运用 第五讲:单例模式 第六讲:原型模式 ...第三十讲:设计模式总结

Global site tag (gtag.js) - Google Analytics