设计模式之策略模式

简介: 设计模式目录 http://blog.csdn.net/fenglailea/article/details/52733435 风.fox策略模式 Strategy Pattern定义一组算法,将每个算法都封装起来,并且使他们之间可以互换通用类图组成封装角色 Context 也叫做上下文角色,起承上启下封装左右,屏蔽高层模块对策略

设计模式目录
http://blog.csdn.net/fenglailea/article/details/52733435
风.fox

策略模式 Strategy Pattern

定义一组算法,将每个算法都封装起来,并且使他们之间可以互换

通用类图

策略模式

组成

  • 封装角色 Context
    也叫做上下文角色,起承上启下封装左右,屏蔽高层模块对策略
    、算法的直接访问,封装可能存在的变化
  • 抽象策略角色 Strategy
    策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性
  • 具体策略角色 ConcreteStrategy
    实现抽象策略中的操作,该类含有具体的算法

案例

JAVA

//抽象的策略角色
public interface Strategy{
    //策略模式的运算法则
    public void doSomething();
}
//具体策略角色
public class ConcreteStrategy1 implements Startegy{
    pulic void doSomthing(){
        System.out.println("具体策略1的运算法则");
    }
}
public class ConcreteStrategy2 implements Startegy{
    pulic void doSomthing(){
        System.out.println("具体策略2的运算法则");
    }
}
// 封装角色
public class Context{
    //抽象策略
    private Startegy startegy =null;
    //构造函数设置具体策略
    public Context(Startegy _startegy){
        this.startegy=_startegy;
    }
    //封装后的策略方法
    public void doAnything(){
        this.startegy.doSomthing();
    }
}
//高层模块
public class Client{
    public static void main(String[] args){
        //声明一个具体的策略
        Startegy startegy=new ConcreteStrategy1();
        //声明上下文对象
        Context context=new Context(startegy);
        //执行封装后的方法
        context.doAnything();
    }
}

优点

算法可以自由切换
避免使用过多重条件判断
扩展性良好

缺点

策略类数量增多
所有的策略类都需要对外暴露

使用场景

  • 多个类只有在算法或行为上稍有不同的场景
  • 算法需要自由切换的场景
  • 需要并把算法规则的场景
目录
相关文章
|
2月前
|
设计模式 算法 测试技术
PHP中的设计模式:策略模式的应用与实践
在软件开发的浩瀚海洋中,设计模式如同灯塔,指引着开发者们避开重复造轮子的暗礁,驶向高效、可维护的代码彼岸。今天,我们将聚焦于PHP领域中的一种重要设计模式——策略模式,探讨其原理、应用及最佳实践,揭示如何通过策略模式赋予PHP应用灵活多变的业务逻辑处理能力,让代码之美在策略的变换中熠熠生辉。
|
15天前
|
设计模式 算法 Kotlin
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
本教程详细讲解Kotlin语法,适合深入学习。快速入门可参考“简洁”系列教程。本文通过游泳运动员的案例,介绍策略模式及其在Kotlin中的改良应用,利用高阶函数简化代码结构,提高灵活性。
27 3
|
15天前
|
设计模式 算法 Kotlin
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
本教程详细讲解Kotlin语法,适合深入学习。快速入门可参考“简洁”系列教程。本文介绍策略模式在Kotlin中的应用,通过游泳运动员的例子,展示如何使用接口和高阶函数实现策略模式,使代码更简洁、灵活。
26 2
|
17天前
|
设计模式 算法 Kotlin
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
50 3
|
18天前
|
设计模式 算法 Kotlin
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
27 3
|
17天前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入解析与实践
【10月更文挑战第9天】 策略模式是一种行为设计模式,它允许在运行时选择算法的行为。在PHP开发中,通过使用策略模式,我们可以轻松切换算法或逻辑处理方式而无需修改现有代码结构。本文将深入探讨策略模式的定义、结构以及如何在PHP中实现该模式,并通过实际案例展示其应用价值和优势。
17 1
|
18天前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入解析与应用
【10月更文挑战第8天】 在软件开发的浩瀚宇宙中,设计模式如同星辰指引,照亮了代码设计与架构的航道。本文旨在深入探索PHP语境下策略模式(Strategy Pattern)的精髓,不仅剖析其内核原理,还将其融入实战演练,让理论在实践中生根发芽。策略模式,作为解决“如何优雅地封装算法族”的答案,以其独特的灵活性与扩展性,赋予PHP应用以动态变换行为的能力,而无需牵动既有的类结构。
14 2
|
19天前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入解析与实践
在PHP开发中,设计模式是提高代码可读性、可维护性和扩展性的重要工具。本文将深入探讨策略模式这一行为型设计模式,通过分析其定义、结构、使用场景以及在PHP中的实际应用,帮助开发者更好地理解和运用策略模式来优化自己的项目。不同于传统摘要的简洁概述,本文摘要部分将详细阐述策略模式的核心理念和在PHP中的实现方法,为读者提供清晰的指引。
|
28天前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入解析与实践
策略模式是一种行为型设计模式,用于定义一系列算法,将每种算法都封装起来,并使它们可以互换。本文将探讨如何在PHP中实现策略模式,以及如何利用它来提高代码的灵活性和可维护性。通过具体示例,我们将看到策略模式在处理复杂业务逻辑时的优势,从而帮助开发者编写出更加清晰、易于扩展的代码。
|
27天前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入解析与实践
在软件开发的广袤领域中,PHP以其灵活性和广泛的应用场景占据了一席之地。本文聚焦于PHP中的一个核心概念——设计模式,特别是策略模式。策略模式作为一种行为型设计模式,允许在运行时选择算法或操作的具体实现,为软件设计带来了极大的灵活性。本文将深入探讨策略模式的基本原理、应用场景以及在PHP中的具体实现方式,旨在帮助开发者更好地理解和运用这一设计模式,提升代码的可维护性和扩展性。
16 2

热门文章

最新文章