golang 策略模式与策略工厂模式

本文介绍了Golang中的策略模式,它将算法封装以实现互换,不改变客户端。接着讨论了策略工厂模式,用于简化大量策略管理的复杂性,降低客户端的工作难度。文中通过代码示例展示了如何在Golang中使用这两种模式实现排序方法的调用,强调了策略模式在实际开发中的灵活性。
摘要由CSDN通过智能技术生成

什么是策略模式

策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。

什么是策略工厂模式

在一个使用策略模式的系统中,当存在的策略很多时,客户端管理所有策略算法将变得很复杂,如果在环境类中使用策略工厂模式来管理这些策略类将大大减少客户端的工作复杂度

代码

在下面的代码中,分别用策略模式和策略工厂模式实现了客户端通过接口来调用不同的排序方法。在实际开发中,new策略这一步一般不是直接new的,比如用spring的IoC或者通过读取配置文件来选择不同的策略,而代码是不用改动的,这是策略模式的优势。

package main

import "fmt"

func main() {
   

	arr := []int{
   1,2,3,6,4}

	//如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等
	//策略上下文,客户端主要通过该环境类来实现不同的策略调整,而不需要改变代码,也不用加入过多的if else 判断
	sorter := new(QuickSort)
	//sorter := new(BubleSort)

	//设置不同的策略,则会用不同的策略方法,对客户端的调用来说,写法一样,因为有一个统一的接口,本例为ISort接口。
	context := new(StrategyContext
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值