Golang策略模式算法动态切换示例

策略模式通过接口封装算法,使算法可互换。定义SortStrategy接口,实现BubbleSort和QuickSort结构体,由Sorter上下文动态切换策略,客户端无需修改代码即可运行不同排序算法,提升扩展性与维护性。

golang策略模式算法动态切换示例

在Go语言中,策略模式是一种行为设计模式,它允许你定义一系列算法,并将每种算法封装起来,使它们可以互换使用。这种模式让算法的变化独立于使用它的客户端。下面通过一个实际例子展示如何用Golang实现策略模式,动态切换不同的算法。

定义策略接口

首先,我们定义一个统一的策略接口,所有具体的算法都实现这个接口。

注意: 接口抽象了行为,使得调用方无需关心具体实现。

比如我们要实现不同方式的排序算法:

type SortStrategy interface {
Sort([]int) []int
}

立即学习“go语言免费学习笔记(深入)”;

实现具体策略

接下来,实现几种具体的排序算法,如冒泡排序和快速排序:

type BubbleSort struct{}

func (b *BubbleSort) Sort(data []int) []int {
n := len(data)
result := make([]int, n)
copy(result, data)
for i := 0; i < n-1; i++ {
for j := 0; j < n-i-1; j++ {
if result[j] > result[j+1] {
result[j], result[j+1] = result[j+1], result[j]
}
}
}
return result
}

type QuickSort struct{}

func (q *QuickSort) Sort(data []int) []int {
result := make([]int, len(data))
copy(result, data)
quickSortHelper(result, 0, len(result)-1)
return result
}

func quickSortHelper(arr []int, low, high int) {
if low < high {
pi := partition(arr, low, high)
quickSortHelper(arr, low, pi-1)
quickSortHelper(arr, pi+1, high)
}
}

func partition(arr []int, low, high int) int {
pivot := arr[high]
i := low - 1
for j := low; j < high; j++ {
if arr[j] < pivot {
i++
arr[i], arr[j] = arr[j], arr[i]
}
}
arr[i+1], arr[high] = arr[high], arr[i+1]
return i + 1
}

千帆AppBuilder 千帆AppBuilder

百度推出的一站式的AI原生应用开发资源和工具平台,致力于实现人人都能开发自己的AI原生应用。

千帆AppBuilder 174 查看详情 千帆AppBuilder

上下文管理策略切换

创建一个上下文结构体来持有当前策略,并提供方法动态更换策略:

type Sorter struct {
strategy SortStrategy
}

func (s *Sorter) SetStrategy(strategy SortStrategy) {
s.strategy = strategy
}

func (s *Sorter) Sort(data []int) []int {
return s.strategy.Sort(data)
}

使用示例

在main函数中演示如何动态切换算法:

func main() {
sorter := &Sorter{}

data := []int{64, 34, 25, 12, 22, 11, 90}

// 使用冒泡排序
sorter.SetStrategy(&BubbleSort{})
result1 := sorter.Sort(data)
fmt.Println("冒泡排序结果:", result1)

// 切换为快速排序
sorter.SetStrategy(&QuickSort{})
result2 := sorter.Sort(data)
fmt.Println("快速排序结果:", result2)
}

输出:
冒泡排序结果: [11 12 22 25 34 64 90]
快速排序结果: [11 12 22 25 34 64 90]

基本上就这些。通过策略模式,我们可以轻松替换算法而不需要修改调用代码,提升了程序的扩展性和可维护性。不复杂但容易忽略的是接口抽象和运行时切换的能力。

以上就是Golang策略模式算法动态切换示例的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1128287.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 16:25:40
下一篇 2025年12月2日 16:26:01

相关推荐

  • 比特币交易所(虚拟货币中心化交易平台) v6.140.0 官方安卓版

    比特币交易所(OKx)一般又称欧易app,OKEx比特币app,ok交易所,欧易okex,欧易okex交易平台,欧易交易所,是一款在币圈中非常流行的数字货币交易投资app,是全球著名的数字资产交易所之一,面向全球用户提供比特币 (BTC)、以太坊 (ETH)、泰达币 (USDT),狗狗币 (DOGE…

    2025年12月9日
    000
  • ETH:加密世界的燃料

    以太坊(ethereum,简称eth),这个名字如今已不仅仅是加密货币领域的一个代号,它更像是数字世界的“燃料”,驱动着一个庞大且日益复杂的生态系统。从defi(去中心化金融)到nft(非同质化代币),从元宇宙到企业级区块链应用,eth无处不在,扮演着不可或缺的角色。深入了解eth,就如同打开了通往…

    好文分享 2025年12月9日
    000
  • AI模型Claude预测XRP年底价格区间将稳定站上5美元

    近期,AI模型Claude发布预测称,瑞波币(XRP)年底价格区间有望稳定站上5美元,显示市场短期看涨情绪升温。 XRP年底走势分析 分析师认为,XRP价格上涨动力主要来源于: 机构资金入场:多家大型投资机构持续布局XRP,增加市场买盘。ETF及合规化进程:瑞波币相关ETF及监管合规推动市场信心回升…

    2025年12月9日
    000
  • 比特币的未来

    在数字货币的世界里,选择一个合适的加密货币交易平台至关重要。一个优秀的交易平台不仅能提供丰富的交易对,更要在安全性、流动性、用户体验和客户服务等方面表现出色。本文将深入探讨目前市场上主流的几大加密货币交易平台,并针对其特点、优势以及可能存在的潜在问题进行详细分析,旨在帮助投资者做出明智的选择。我们将…

    好文分享 2025年12月9日
    000
  • L1区块链成为新战场详细分析,企业巨头入局打破公平竞争

    企业巨头正纷纷打造专属的L1区块链,将原本中立的技术底层转变为具备合规优势与市场壁垒的战略资产。 当你在加密行业沉浸多年后,会逐渐察觉到某些周期性规律。我们所使用的交易工具和构建的基础设施始终处于动态演变之中。当前,加密领域最显著的变化之一,正发生在第一层网络(L1)的基础架构上。 过去,L1的选择…

    2025年12月9日
    000
  • 什么是Maxi Doge(MAXI)币?MAXI价格预测2025、2026-2030年

    目录 Maxi Doge 代币 – ICO 概述MaxiDoge价格预测2025 年 MaxiDoge 价格预测2026年Maxi Doge价格预测2030 年 Maxi Doge 价格预测Maxi Doge 价格预测表(2025 年至 2030 年)什么是 MAXI?起源和主题可用性、生态系统和未…

    2025年12月9日
    000
  • 比特币生态系统

    加密货币市场如同浩瀚星辰,交易所则是连接我们与这片星海的桥梁。 面对种类繁多的加密货币交易所,如何做出明智的选择,找到那个最适合自己的交易平台?这不仅关乎交易体验的顺畅与否,更直接影响到资金安全与投资收益。本文将深入剖析当前市场上主流的加密货币交易所,为您揭示它们各自的优势与特点,并着重探讨在选择交…

    好文分享 2025年12月9日
    000
  • 以太坊:智能合约平台

    以太坊(ethereum),这个名字在今天的区块链世界中无疑是熠熠生辉的存在。它不仅仅是一种加密货币,更是一个革命性的开放式智能合约平台。如果你曾听说过比特币是“数字黄金”,那么以太坊则被誉为“世界计算机”。它的核心创新在于超越了单纯的价值转移,允许开发者在其之上构建和运行去中心化应用(dapps)…

    好文分享 2025年12月9日
    000
  • 币安Swarm Network(TRUTH)币是什么?如何领取?TRUTH代币经济与前景分析

    目录 Swarm Network(TRUTH)最新动态Swarm Network项目介绍Swarm Network技术架构AI层人工审核层链上层代表应用:Rollup News与隋的关系及代理执照Swarm Network如何运作TRUTH代币经济学总供应量和分配空投、获取和效用Swarm Netw…

    2025年12月9日
    000
  • 币安 Binance 官方客户端注册 + 下载完整指南

    Binance币安 欧易OKX ️ Huobi火币️ 想用币安(Binance)交易加密货币,注册和下载官方客户端是第一步。操作不难,但得确保每一步都安全正确,避免下到假应用或账号出问题。下面从下载、注册到初步设置,一步步说清楚。 如何下载币安官方App 下载必须认准官方渠道,防止安装山寨软件导致资…

    2025年12月9日
    000
  • 比特币与区块链

    在数字货币的世界中,选择一个安全、可靠、功能丰富的交易平台至关重要。这不仅关系到您的资产安全,更直接影响您的交易体验和潜在收益。面对市场上琳琅满目的交易所,如何做出明智的选择,成为摆在许多投资者面前的一道难题。本文将深入探讨目前主流的加密货币交易所,为您详细分析它们的特点、优势以及潜在的风险,帮助您…

    好文分享 2025年12月9日
    000
  • 火币交易平台 APP 正版安装(安卓+iOS 支持)

    Binance币安 欧易OKX ️ Huobi火币️ 关于火币交易平台APP的安装,需要明确一个关键事实:北京火币天下网络技术有限公司(即大家熟知的“火币网”)已于2021年7月因未开展实际业务而申请注销。这意味着其面向中国大陆用户的原有交易服务已经停止。 当前情况说明 虽然火币品牌的相关公司已注销…

    2025年12月9日
    000
  • zkVerify (VFY)币是什么?工作原理、代币经济学介绍

    目录 ZkVerify (VFY)最新动态什么是 zkVerify (VFY)?谁创建了 zkVerify (VFY)?哪些风险投资支持 zkVerify (VFY)?zkVerify(VFY)的工作原理专门的验证层证明提交界面亚秒级验证证明机制跨链互操作性zkVerify 代币(VFY)及其经济学…

    2025年12月9日
    000
  • 一文详细了解为何比特币昨天暴涨?大型鲸鱼投资者持续购BTC

    从9月29日下午起,比特币——全球市值最高的加密资产——在截至9月30日凌晨的交易时段内实现了4.2%的显著涨幅。尽管这一轮上涨看似突如其来,实则背后有多重驱动因素共同作用。 NEW: Consensus among a handful of Capitol Hill sources is that…

    2025年12月9日
    000
  • 预警:巴菲特偏爱标普500,但以比特币(BTC)计价已下跌 88%

    目录 S&P 500 屡创新高,比特币表现更胜一筹比特币与标普 500 的本质差异 尽管标普 500 不断刷新历史高位,但数据显示,若与比特币相较,这一传统股指已显得黯然失色。然而,这种对比是否真正合理? 虽然亿万富翁对冲基金经理巴菲特长期力荐普通投资者持有标普 500 指数基金,但最新统计…

    2025年12月9日
    000
  • DoubleZero(2Z)币是什么?未来潜力如何?DoubleZero价格预测2025-2036

    目录 DoubleZero(2Z)在币安开启TGEBinance 针对 DoubleZero (2Z) 的促销活动优惠A:针对新用户活动B:交易赢奖励活动C:交易量竞赛什么是 DoubleZero什么是2Z 代币DoubleZero 架构:通过去中心化网络加速区块链DoubleZero的发展愿景Do…

    2025年12月9日
    000
  • BNB冲破1000美元后,长期持有者为何选择不离场?一文分析

    目录 没有太多选择为什么能持仓那么久?结语 BNB突破1000美元后,长期持有者未选择大幅抛售,主要原因包括: 代币经济模型优势:BNB通过季度回购销毁机制直接捕获币安平台收入,增强稀缺性;Binance Alpha等项目锁定大量BNB减少流通量,同时持有者可获得Launchpool空投等额外收益。…

    2025年12月9日
    000
  • 什么是zkVerify (VFY)币?值得投资吗?zkVerify投资价值、代币经济和前景分析

    目录 团队与发展合作伙伴关系项目理念和目的项目如何运作?(技术创新和差异)目的和解决方案治理路线图VFY代币使用领域分配生态系统和用例特色功能 zkverify (vfy) 是一个开放、去中心化且高性能的 layer 1 区块链,专注于零知识证明(zkproofs)的验证。其核心使命是优化当前 zk…

    2025年12月9日 好文分享
    000
  • 喜报:比特币(BTC)重现与黄金的相关性 价格逼近11.7万美元

    周三,比特币上涨,逼近11.7万美元,因多头忽略下行流动性,跟随黄金创下新的历史高点。 要点总结: 比特币在华尔街开盘前迎来新一轮上涨,目标价格逼近11.7万美元。价格下方的流动性增加,引发市场担忧,比特币可能仍会“打掉”多头头寸。黄金再创历史新高,比特币终于尝试跟随其走势。 周三,比特币(BTC)…

    2025年12月9日 好文分享
    000
  • 如何在加密货币平台进行智能合约交易?

    在加密货币平台进行智能合约交易,核心在于理解智能合约的运行机制,并选择支持该功能的平台。这类交易不依赖中介,而是通过代码自动执行约定条款。操作前需确保你已掌握基本的区块链知识,并准备好数字钱 包。 选择支持智能合约的平台 并非所有加密货币交易平台都支持智能合约交易。你需要使用支持可编程区块链的平台,…

    2025年12月9日
    000

发表回复

登录后才能评论
关注微信