go语言:模板方法模式

模板方法模式的主要目的是将变化的行为不变化的行为在不同的时间段实现并且已经定义好了对行为的算法,用于对未来进行拓展。如:把大象放入冰箱需要几步?第一步:打开冰箱;第二步:放入大象;第三部:关上冰箱。此处放入大象的步骤就是行为的算法。然后由于冰箱得到构造不同,打开的方式可能不同;但是放入大象都一样。所以虽然定义了行为的算法,但是其具体行为还不确定。可能需要未来才能进行定义具体行为,其大致代码如下:

package main

import "fmt"

// 此处为变化的具体行为
type PutElephantMode interface {
	OpenFridge()
	CloseFridge()
}

//定义算法
type PutElephant struct {
}

func (p *PutElephant) put() {
	fmt.Println("put elephant")
}

//此处为定义的算法
func (p *PutElephant) PutElephant(putMode PutElephantMode) {
	putMode.OpenFridge()
	p.put()
	putMode.CloseFridge()
}

// 后续实现的算法
type HaierFridge struct{}

func (*HaierFridge) OpenFridge() {
	fmt.Println("open Haier fridge")
}

func (*HaierFridge) CloseFridge() {
	fmt.Println("close Haier fridge")
}

func main() {
	var put PutElephant
	put.PutElephant(&HaierFridge{})
}

模板方法顾名思义就是方法的主体流程已经定义好了,剩下的就是在未来加入具体的实现从而完成这个流程的开发。可以极大的增强功能的可替换性。

​ 与策略模式不同的地方在于,策略模式是行为不变,算法流程变化。而模板方法模式是算法流程不变,行为发生变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值