`
dajian
  • 浏览: 114669 次
  • 性别: Icon_minigender_1
  • 来自: 白云
社区版块
存档分类
最新评论

1.策略模式-Strategy

阅读更多
策略模式
是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。
策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。

一句话来形容:准备一组算法,并将每一个算法封装起来,使得他们可以互换


策略模式的结构
策略模式涉及到三个角色:
  • 环境角色:持有一个Strategy类(策略类)的引用
  • 抽象策略角色:策略类,通常由一个接口或者抽象类实现
  • 具体策略角色:包装了相关的算法和行为




《三国演义》中的故事
诸葛亮的精囊妙计三条妙计
走乔国老的后门,求孙国太放人,请孙夫人退兵
赵云按计行事
环境角色:赵云由他来决定选择策略
抽象策略角色:(接口)精囊妙计按计行事(抽象方法)
具体策略角色:三条妙计(单独使用的)


例子:一个策略模式的加减乘除
抽象策略角色: (精囊妙计) Operation抽象类(oper抽象方法)
具体策略角色: (三条妙计) 计算乘积,计算除法,计算加法,计算减法
环境角色:  (赵云)  有一个策略类( Operation )的引用


策略模式的优缺点:
优点:
1.提供了管理相关的算法族的办法。
2.提供了可以替换继承关系的办法。
3.避免使用多重条件转移语句

缺点:
1.客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
2.造成很多的策略类。
分享到:
评论

相关推荐

    设计模式-Strategy模式

    在Strategy模式中,我们将每种算法封装为一个策略类,每个策略类都实现了同一接口或抽象类,这样确保所有策略具有相同的契约。在上述案例中,我们可以创建一个`TaxStrategy`接口,包含计算税额的方法,然后为每个...

    设计模式-策略模式(Strategy)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。这种模式允许你使用算法族,而无需在代码中硬编码这些算法。通过将算法封装到具有共同接口的独立对象中,策略模式使得你可以根据需要灵活地切换算法,...

    Java Patterns -Strategy.rar_strategy

    在"Java Patterns - Strategy.rar_strategy"这个压缩包中,可能包含了关于策略模式的详细讲解和实例代码。"www.pudn.com.txt"可能是提供了一些相关的资料链接或者文章,它可能包含了策略模式在实际项目中的应用示例...

    Python库 | django-strategy-field-1.1.1.tar.gz

    而`django-strategy-field`是Django生态中的一个实用库,它引入了策略模式(Strategy Pattern)的概念,为Django模型字段提供了灵活的行为管理。本文将深入探讨`django-strategy-field` 1.1.1版本的特性和使用方法。...

    php设计模式-策略模式-例题学习

    策略模式是设计模式的一种,它允许我们在运行时动态地改变对象的行为。在这个"php设计模式-策略模式-例题学习"的例子中,我们将深入理解策略模式的运用及其在PHP中的实现。 首先,让我们来看看核心的类和接口: ...

    Java 设计模式-策略模式(Strategy)Android讲解

    首先,策略模式由三个主要组成部分构成:上下文(Context)、策略(Strategy)接口和具体策略(Concrete Strategy)。上下文是使用策略的对象,它维护一个对策略的引用,并调用策略的接口来执行算法。策略接口定义了一组...

    设计模式专题之(十六)策略模式---设计模式策略模式示例代码(python--c++)

    _strategy->do_algorithm(data); } }; ``` 这里,`Strategy`是策略接口,`ConcreteStrategyA`和`ConcreteStrategyB`是具体策略类,它们都实现了`do_algorithm`方法。`Context`类持有`Strategy`的指针,并通过`...

    设计模式培训-strategy.pdf

    #### 核心概念解析:策略模式与设计模式概览 设计模式作为软件工程领域的重要组成部分,是解决特定问题的有效方法论。设计模式的本质在于将实践中遇到的常见问题进行抽象,提炼出可复用的解决方案,从而避免重复造...

    走进设计模式之 策略模式(Strategy)

    void executeStrategy() { strategy->execute(); } }; ``` 上下文类不关心具体策略的实现,只关心如何调用策略。 4. **客户端代码(Client)**:客户端代码创建具体策略对象,并将其传递给上下文。例如,`main....

    设计模式-策略模式-c++版

    void useStrategy() { strategy->execute(); } }; ``` 在提供的压缩包中,可能包含了实现上述概念的C++代码。源码文件可能会展示如何实例化上下文对象并根据需要切换策略,例如通过调用`setStrategy`方法。UML类图...

    设计模式C++学习之策略模式(Strategy)

    return strategy->execute(num1, num2); } }; ``` 在这个例子中,`Strategy`是策略接口,`ConcreteStrategyA`和`ConcreteStrategyB`是具体策略,`Context`是上下文。`Context`持有一个`Strategy`指针,并通过`...

    人人都会设计模式---策略模式--Strategy

    1. **策略模式的组成部分**: - **策略接口/抽象类**:定义了所有支持的算法或行为的公共接口,使得客户端可以通过这个接口来调用策略。 - **具体策略类**:实现了策略接口,提供了具体的算法实现或行为。 - **上...

    数字化转型之战(winning-strategy-digital-transformation.pdf)

    本文将深入探讨数字化转型的概念、重要性及其实施策略。 #### 二、核心概念:数字化转型的意义 **1. 定义与理解** - **数字化转型**:指利用数字技术从根本上改变业务模式和价值创造的过程,以适应不断变化的市场...

    设计模式培训-strategy

    策略模式是一种行为型设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法独立于使用它的客户端。 #### 七、策略模式应用场景示例——Duck Simulator 假设有一个鸭池仿真...

    3 策略模式-课程内容.rar

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或时间点执行不同算法的情况。策略模式允许我们将算法封装到独立的策略类中,并在需要的时候动态选择...

    设计模式--策略模式java例子

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常用于替换硬编码的条件语句,使代码更加灵活、可扩展和易于维护。下面我们将详细探讨策略模式的核心概念、实现方式以及在实际...

    软件设计模式 L02-Strategy.ppt

    策略模式(Strategy Pattern)是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需求的变化,特别是在涉及行为或者算法的时候。策略模式提供了一种方式来封装一系列相关的算法,并使...

    sprintboot-strategy-pattern-demo-master.zip

    【标题】"sprintboot-strategy-pattern-demo-master.zip" 是一个使用Spring Boot技术实现的策略模式示例项目,它提供了一种快速理解并应用策略模式的开箱即用的体验。 【描述】"基于springboot做了一个策略模式的...

    策略模式(strategy)

    策略模式的核心组成部分包括策略(Strategy)、上下文(Context)和具体策略(Concrete Strategies)。策略定义了算法家族,而上下文则使用这些策略,但并不知道具体的实现细节。具体策略是实现了策略接口的具体算法...

    7.java模板模式与8.策略模式示例

    Java模板模式和策略模式是两种常用的面向对象设计模式,它们在软件开发中有着广泛的应用。模板模式是一种行为设计模式,而策略模式则属于结构型设计模式。这两种模式都是用来处理算法和行为的,但它们的核心理念和...

Global site tag (gtag.js) - Google Analytics