4.15_strategy_行为型模式:策略模式
行为型模式 --- 策略模式 --- 内容:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换使算法可以独立于使用它的客户而变化角色:1. 抽象策略 (Strategy)2. 具体策略 (Concrete Strategy)3. 上下文 (Context)优点:1. 定义了一系列可复用的算法和行为2. 消除了一些条件语句3. 可以提供相同行为的不同实现缺点:1. 客户必须了解不同的策略
from abc import ABCMeta, abstractmethodclass Strategy(metaclass=ABCMeta):"""抽象策略 (Strategy)"""@abstractmethoddef execute(self, data):passclass FastStrategy(Strategy):def execute(self, data):print(f'用较快的策略处理 {data}')class SlowStrategy(Strategy):def execute(self, data):print(f'用较慢的策略处理 {data}')class Context(object):def __init__(self, strategy, data):self.strategy = strategyself.data = datadef set_strategy(self, strategy):self.strategy = strategydef do_strategy(self):self.strategy.execute(self.data)# --- Client ---
data = '[...]'
s = FastStrategy()
c = Context(s, data)
c.do_strategy()
4.15_strategy_行为型模式:策略模式相关推荐
- Java设计模式之行为型:策略模式
一.背景: 在开发中经常遇到这种情况,实现某个功能有多种算法策略,我们可以根据不同环境或者条件选择不同的算法策略来完成该功能,比如查找.排序等,一种常用方式是硬编码在一个类中,如需要提供多种查找算法, ...
- JavaScript 设计模式核⼼原理与应⽤实践 之 行为型:策略模式——重构小能手,拆分“胖逻辑”
JavaScript 设计模式核⼼原理与应⽤实践 之 行为型:策略模式--重构小能手,拆分"胖逻辑" 行为型:策略模式--重构小能手,拆分"胖逻辑" 策略模式和 ...
- 设计模式 — 行为型模式 — 策略模式
目录 文章目录 目录 策略模式 应用场景 代码示例 策略模式 策略模式中,首先定义了一系列不同的算法,并把它们一一封装起来,然后在策略类中,使这些算法可以相互替换.这意味着,让一个类的行为(算法)可以 ...
- 【设计模式系列】行为型之策略模式
定义 首先介绍一下众多博客文章中提到的策略模式的概念,针对于文章结构构成,请允许小编在此处再细说一下. 策略模式:百度百科中引述为:指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法. 1. ...
- java-抽象工厂模式+工厂方法模式+策略模式简单应用实战(登录场景)
前言 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计模式 ...
- 工厂模式+策略模式+反射机制解决系统功能模块相似的问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 背景 痛点 一.如何根据不同条件获取不同的数据库Mapper? 二.如何根据不同条件创建相应的数据库实体对象? 总结 背景 ...
- 进阶学习之旅-设计模式之(委派模式策略模式)
文章目录 1.课程学习目标 2.内容定位 3.委派模式详解 3.1委派模式的定义 3.2 demo案例 3.2.1模拟Boss指派任务给Leader 由员工完成任务执行 3.2.2 模拟spring ...
- 3.js模式-策略模式
1. 策略模式 策略模式定义一系列的算法,把它们封装起来,并且可以互相替换. var strategies = { isNonEmpty: function(value,errMsg){ if(val ...
- 23种模式——策略模式
目录 策略模式 策略模式的收银软件 策略模式的特点 使用场景 优缺点 策略模式和工厂模式的结合 策略(Strategy)模式 本质:分离算法,选择实现. 策略模式:针对一组算法,将每一个算法封装到具有 ...
- 模板模式+策略模式优化
前言 写在最前面,最近在项目中发现一部分代码,可以用模板模式+策略模式来进行优化. 背景 业务中,系统中对订单状态的处理,需要发送对用户短信发送或者微信推送等操作. 发送短信和微信推送钱,需要处理逻辑 ...
最新文章
- ORM是进化还是倒退?
- 去除文本框点击的背影
- Django-请求与响应
- osg渲染到纹理技术(一)
- 简单的实现RAII封装。
- jeecg 数据修改历史日志对比方法
- DBA的宿命(困兽之斗)
- django-crontab 快速配置,高效执行django的定时任务/周期性任务
- python变量作用域图解_python笔记--作用域、高阶函数、闭包
- 墨鏡的bism_如何使用商业智能语义模型(BISM)和Excel设计基于地图的报表
- 注意!恶意NPM包正在安装勒索软件和密码窃取木马
- windows server 安装php环境
- 有关onpropertychange事件
- java同步器有哪些_Java 队列同步器 AQS
- C语言从入门到放弃视频教程
- 2021年低压电工复审考试及低压电工模拟考试
- win10JDK环境变量的配置
- xlsx表格怎么做汇总统计_办公软件excel表格数据统计-如何将多个EXCEL表格的数据进行汇总?...
- redis开启rdb和aof后文件正确恢复
- HTML特殊字符编码对照表 —— (二)
热门文章
- 解析单句sql_SqlParser 一个利用正则表达式解析单句SQL的类
- java鸟_java飞扬的小鸟
- 集群虚拟服务器,Nginx集群
-LVS(Linux虚拟服务器)简介
- java三个技术平台_Java的3个平台有什么区别
- python常见的控制流结构有_【Python】控制流语句、函数、模块、数据结构
- java主函数_《左手 Java 右手 Python 》之 Java 的安装与初识(1)
- vue + element-ui tab切换
- Android开发笔记(十三)视图绘制的几个方法
- 小学计算机知识点,小学信息技术单元知识点目录介绍
- C程序100例 第二题