策略模式(Strategy Pattern)允许你在运行时根据指定的上下文确定程序的动作。可以在两个类中封装不同的算法,并且在程序运行时确定到底执行哪中策略。 特点:定义算法家族,分别封装起来,让它们之间可以互相替换。此模式让算法的变化不会影响到使用算法的客户。 《大话设计模式》中实例:超市收银软件。 代码:#!/usr/bin/env python
#-*- coding: utf-8
转载
2023-06-27 22:04:31
0阅读
场景描述:商场收银软件,商场经常进行满减,打折等一系列活动定义它定义了一组算法,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。类型:行为类模式策略模式结构图策略模式结构解析封装类:也叫上下文,对策略进行二次封装,目的是避免高层模块(客户端)对策略的直接调用。抽象策略:通常情况下是一个接口(也可以用抽象类),当各个实现类中存在着重复的逻辑时,则使用抽象类来封装这
转载
2023-08-17 23:02:13
200阅读
什么是策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if.
转载
2023-12-07 07:11:55
92阅读
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。优点算法可以自由切换。避免使用多重条件判断。扩展性良好。缺点策略类会增多。所有策略类都需要对外暴露。使用场景如果在一个系统里面有许多类
转载
2023-08-10 13:48:11
183阅读
1.背景 为什么想介绍下策略模式,因为我已经在很多场景下用到锅这个模式,相信很多人也是,这是java设计模式中非常常用的一个模式了。2.策略模式介绍1.什么是策略模式 策略模式就是定义一系列算法,把他们一个一个封装起来,并且使他们可以相互替换. 用人话来举个例子:就是你想去旅游,预算10w元,四个旅游团分别给出了四种方案(策略),
转载
2023-11-14 10:41:03
50阅读
策略模式策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式的结构策略模式是对算法的包装,是把使用算法的责任和算法本身分开。策略模式通常是把一系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。策略模式涉及到三个角色:1、环境角色持有一个策略Strategy的引用2、抽象策略角色这
转载
2024-07-08 15:22:48
22阅读
前言本次来一点实际开发中会用到的小技巧。比如平时大家是否都会写类似这样的代码: if(a){ //dosomething }else if(b){ //doshomething }else if(c){ //doshomething } else{ doshomething }条件少还好,一旦 else if 过多这里的逻辑将会比较混乱,并很容易出错。比如这样: 摘自 cim 中的一个
转载
2023-08-23 20:20:45
47阅读
目录一、认识策略模式1、概念2、白话理解二、代码中看策略模式1、没有策略模式怎么写2、引入策略模式三、策略模式的优缺点优点缺点 一、认识策略模式1、概念Context(环境类):环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略。Strategy(抽象策略类):它为所支持的算法声明了抽象方法,是所有策略类的
转载
2023-07-16 09:47:08
118阅读
策略模式是对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。 比如“三只松鼠”的官方旗舰店,有“优惠”的行为,但是有好几种优惠选择:满两件打7折,满199-100等。这些优惠选择就是实现了不同的算法。 又比如说,对两个数进行操作,可以有“加减乘除”四种不同的实现。适用场景和优缺点适用场景(1)当一个系统中有许多类,它们之间的区别仅在于它们的行为,希望动态地让一个对象在许多行为中选择一种行
转载
2023-12-05 19:07:37
42阅读
设计模式之于程序员,是一种诱惑,不管你信不信,反正我信。不懂则必不会用,学习设计模式,在于在某个时候,需要实现某些功能,你会想到,哦,历经千山万水,原来你也在这里。网上资料云集,看一个例子看不懂,就多看几个,自然知其然且知其所以然。 这里我会记录自己学习策略模式的例子,这个例子来自于Head First设计模式;
转载
2023-12-17 23:30:36
34阅读
策略模式是一种非常常见的设计模式,它可以让我们在运行时选择使用不同的算法或行为实现。在Java中,实现策略模式非常简单,只需要定义一个接口来表示策略,并实现该接口的不同策略类即可。
下面我将以表格的形式展示整个实现策略模式的流程:
|步骤|操作|代码|注释|
|---|---|---|---|
|1|定义策略接口|```public interface Strategy { void exec
原创
2024-01-17 12:48:20
158阅读
在这篇博文中,我们将深入探讨Java的策略模式。在软件设计中,策略模式是一种重要的设计模式,它使得我们能够在运行时选择算法,从而达到更为灵活的设计。接下来,我们将从多个方面来分析这个模式,包括背景定位、演进历程、架构设计、性能攻坚、故障复盘和扩展应用。
首先,我们来看看这个策略模式应用的背景。想象一下,我们的业务场景是一个电子商务平台,该平台拥有不同的支付方式:信用卡、支付宝和微信支付。每种支付
Java 设计模式之-策略模式策略模式结构组成Strategy:抽象策略类,一般为接口或者策略类ConcreteStrategy:具体算法实现策略类Context:环境或者上下文类,用于统一执行具体策略其实以上三部分用白话文来解释就是: 需要一个接口和策略进行规范和约束接口和方法,这时需要一些具体的实现算法类去继承或者实现刚刚的接口和策略,最后通过一个环境或者上下文,也可以叫做工厂根据类型进行调用
Java 23种设计模式之策略模式一堆废话,请无视: 做了几年程序员,感觉自己欠缺的很多,而且年近30来自于各方面的压力都促使我迫切的提高自己。 1.考驾照中 2.每天英语打卡 3.每天看点书(在这里做笔记) 4.骑自行车上下班(锻炼身体,很多前辈都是前车之鉴)策略模式1.一个模拟鸭子的简单应用 Joe做了一个模拟鸭子的游戏:SimUDuck.游戏中会出现各种鸭子,一边游泳,一边呱呱叫。 2.让鸭
策略模式1、简介策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如对于上班族来说,每周都会去公司上班,那么我们去公司的方式有多种多样,比如我们可以选择步行,骑单车,开车或者坐公交车等。再比如我们的高德导航系统,在提供导航服务的时候会根据客户需求的不同提供相应的导航策略,比如步行导航,开车导航等。下面看一个关于策略模式的类图2、应用场景应用场景:1、 多
转载
2024-05-21 21:31:30
41阅读
## Java 策略模式代码实现方式
策略模式(Strategy Pattern)是一种行为设计模式,它允许将算法的定义与使用分离,使得算法可以独立变化。在Java中,策略模式通常通过定义一系列策略类来实现,这些策略类实现了同一个接口或抽象类,然后客户端根据需要选择合适的策略进行使用。
### 策略模式的结构
在策略模式中,有三个主要的角色:
1. **上下文(Context)**:持有对策
## Java策略模式实现代码解析
在软件开发中,策略模式是一种行为设计模式,它允许在运行时根据需要更改算法或策略。这种模式通过定义一系列算法,将每种算法封装到具有共同接口的类中,从而使它们可以互相替换。这种模式可以让算法独立于使用它的客户端而变化,同时将算法的变化对客户端的影响降到最低。
在Java中,我们可以使用接口和实现类来实现策略模式。接下来,我们将通过一个简单的示例来演示如何在Jav
原创
2024-04-09 06:30:44
59阅读
一、问题引入 当我们导出一些数据到Excel表格时,有时候需要从不同的维度导出(如:个人维度,时间维度),不同维度所需的处理方式不同,此时的场景很适合用策略模式,下面就以不同维度导出Excel表格为例介绍策略模式。二、策略模式概念和理论知识2.1,策略模式的概念 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。我们创建表示
实际项目中我们经常碰到需要使用if..else..if的分支判断这种情况。这种写法带来一些弊端。0 1
一旦分支多太多,逻辑复杂,会导致代码十分冗长,增加阅读难度。
02 如果需要增加或减少分支,需要改动if…elseif,增大因代码改动而出错的风险。这种粗鄙,丑陋的代码是我们不能接受的。
如:注:实际项目中的订单状态远远不止这些,小编只是模拟一个if...else..if
简介:策略模式(Pattern:Strategy)属于行为型模式,是指对一系列的算法定义,并将每一个算法封装起来,而且他们是可以相互替换。策略模式让算法独立于使用它的客户而独立变化。模式架构抽象策略角色[Strategy]:定义一个公共接口,各种不同的算法以不同的方式实现这个接口。具体策略类[ConcreteStrategy]:实现类抽象策略Strategy定义的接口,包装相关的算法和行为,提供具
转载
2023-11-28 03:01:19
59阅读