golang策略设计模式(代码片段)

zhichaoma zhichaoma     2023-04-06     445

关键词:

目的:根据不同策略来执行对象的相应操作

和工厂模式很像,不同点在于:

工厂模式是传入参数后创建对象,根据传入的参数写逻辑来判断应该创建什么类型的对象,模式的使用者调用对象统一的方法操作。

策略模式是模式的使用者必须先创建好对象,将该对象作为参数传进去,然后通过该对象调用相应的方法。

设计场景如下:

吃饭的时候,我们有三种主食可以选,米饭、面包和面条。

golang代码:

package main

import "fmt"

// 定义类接口
type StapleFood interface 
	Eat()


// 定义接口实现类 1
type RiceStapleFood struct

// 定义接口实现类 2
type NoodleStapleFood struct

// 定义接口实现类 3
type BreadStapleFood struct

// 策略类
type ContextEat struct 
	stapleFood StapleFood


// 实现类1, 方法实现
func (f *RiceStapleFood) Eat() 
	fmt.Println("米饭")


// 实现类2, 方法实现
func (f *NoodleStapleFood) Eat() 
	fmt.Println("面条")


// 实现类3, 方法实现
func (f *BreadStapleFood) Eat() 
	fmt.Println("面包")


// 策略类方法实现
func (c *ContextEat) EatFood() 
	c.stapleFood.Eat()


// 策略类构造方法
func NewContextEat(s StapleFood) *ContextEat 
	return &ContextEatstapleFood: s


func main() 
	// 测试
	eat01 := NewContextEat(new(RiceStapleFood))
	eat01.EatFood()
	eat02 := NewContextEat(new(NoodleStapleFood))
	eat02.EatFood()
	eat03 := NewContextEat(new(BreadStapleFood))
	eat03.EatFood()

golang---gmp调度策略(代码片段)

摘要:Go能很好的支持并发模型,这也是Go如此火热的原因,那今天我们来学习Go的调度机制。数据结构G结构体 G是goroutine的缩写,相当于操作系统中的进程控制块,在这里就是goroutine的控制结构,是对goroutine的抽象,下面是G... 查看详情

golang管道并发模式(代码片段)

查看详情

代码片-策略模式+工厂模式(代码片段)

通过策略类实现不同场景的策略处理,通过工厂模式创建不同的策略对象1.策略实现接口、策略实现类1.1策略接口/***策略接口*/publicinterfaceIWarnRulepublicvoidwarn();1.2策略实现类/***防拆告警策略实现类*/publicclassAntiRemovalWarnimplements... 查看详情

代码片-策略模式+工厂模式(代码片段)

通过策略类实现不同场景的策略处理,通过工厂模式创建不同的策略对象1.策略实现接口、策略实现类1.1策略接口/***策略接口*/publicinterfaceIWarnRulepublicvoidwarn();1.2策略实现类/***防拆告警策略实现类*/publicclassAntiRemovalWarnimplements... 查看详情

代码片-策略模式+工厂模式(代码片段)

通过策略类实现不同场景的策略处理,通过工厂模式创建不同的策略对象1.策略实现接口、策略实现类1.1策略接口/***策略接口*/publicinterfaceIWarnRulepublicvoidwarn();1.2策略实现类/***防拆告警策略实现类*/publicclassAntiRemovalWarnimplements... 查看详情

golang设计模式加重,method.go(代码片段)

查看详情

golang转到tcp代理模式(代码片段)

查看详情

golang转到tcp代理模式(代码片段)

查看详情

设计模式---策略模式(代码片段)

...f0c;每一条途径对应一种算法,此时我们可以使用一种设计模式来实现灵活地选择解决途径,也能够方便地增加新的解决途径。策略模式包含角色Contex 查看详情

设计模式策略模式(简介|适用场景|优缺点|代码示例)(代码片段)

...略模式适用场景三、策略模式优缺点四、策略模式与其它设计模式五、策略模式代码示例1、促销策略接口2、满减促销策略3、返现促销策略4、空促销策略5、促销策略工厂6、促销活动7、测试类一、策略模式简介策略模式:定义了... 查看详情

golang设计图案公共manage.go(代码片段)

查看详情

策略模式(代码片段)

策略模式标签:设计模式初识策略模式定义定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。结构和说明Strategy:策略接口,用来约束一系列具体的策略算法。C... 查看详情

设计模式-策略模式(strategypattern)(代码片段)

classVersionResourceResolverprivateIStrategystargegy;//接口多态实现策略publicvoiddostargegy.doSomeThing();  查看详情

策略模式(代码片段)

策略模式标签:设计模式配套源码github地址初识策略模式定义定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。结构和说明Strategy:策略接口,用来约束一系列... 查看详情

代码片-策略模式+工厂模式(代码片段)

通过策略类实现不同场景的策略处理,通过工厂模式创建不同的策略对象1.策略实现接口、策略实现类1.1策略接口/***策略接口*/publicinterfaceIWarnRulepublicvoidwarn();1.2策略实现类/***防拆告警策略实现类*/publicclassAntiRemovalWarnimplements... 查看详情

设计模式之-策略模式(strategypattern)(代码片段)

...,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变context对象的执行算法。 C++实... 查看详情

策略模式与工厂模式实践(代码片段)

hello,大家好,我是聪聪。文章目录1.介绍2.策略模式结构2.1分支逻辑解释2.2策略模式设计2.3策略模式代码2.3.1通用策略接口及其各策略实现。2.3.2执行上下文信息2.3.3客户端调用2.3.4总结3.常用示例3.1定义一个策略枚举3.2策... 查看详情

策略模式与工厂模式实践(代码片段)

hello,大家好,我是聪聪。文章目录1.介绍2.策略模式结构2.1分支逻辑解释2.2策略模式设计2.3策略模式代码2.3.1通用策略接口及其各策略实现。2.3.2执行上下文信息2.3.3客户端调用2.3.4总结3.常用示例3.1定义一个策略枚举3.2策... 查看详情