当前位置: 首页 > news >正文

[Go版]设计模式——Template模版方法模式

目录

  • 模板方法(Template Method)模式的说明
    • 核心思想
    • 设计优点
  • Go语言实现该模式的示例代码

模板方法(Template Method)模式的说明

核心思想

定义一个算法的骨架,将一些步骤的实现延迟到子类。

设计优点

将通用的模版方法与具体的实现分离,这样可以轻松地添加新的实现,同时确保所有实现都遵循相同的模版结构。增强代码重用和扩展性。

Go语言实现该模式的示例代码

在 Go 语言中,没有传统面向对象语言中的类继承和模板方法的概念,因此无法像传统面向对象语言那样直接使用模板方法模式。Go 语言鼓励使用 接口(interface)和组合(composition) 来实现代码重用和多态性。虽然 Go 语言没有显式的模板方法,但仍然可以使用接口和组合来实现类似的模式。
源码地址: GitHub-golang版本

package templateimport "fmt"// 定义模板方法的抽象结构
type AbstractClass interface {Step1()Step2()
}// 定义模版方法
func TemplateMethod(c AbstractClass) {fmt.Println("模板方法")c.Step1()c.Step2()
}

main.go

// ConcreteClass1 实现 AbstractClass 接口
type ConcreteClass1 struct{}func (c *ConcreteClass1) Step1() {fmt.Println("具体类1的步骤1")
}func (c *ConcreteClass1) Step2() {fmt.Println("具体类1的步骤2")
}// ConcreteClass2 实现 AbstractClass 接口
type ConcreteClass2 struct{}func (c *ConcreteClass2) Step1() {fmt.Println("具体类2的步骤1")
}func (c *ConcreteClass2) Step2() {fmt.Println("具体类2的步骤2")
}func main() {class1 := &ConcreteClass1{}class2 := &ConcreteClass2{}template.TemplateMethod(class1)template.TemplateMethod(class2)
}
http://www.lryc.cn/news/187240.html

相关文章:

  • 数据结构 | (四) Queue
  • 让照片人物开口说话,SadTalker 安装及使用(避坑指南)
  • 系统架构设计:6 论软件质量保证及其应用
  • vscode的窗口下拉显示行数不够
  • Linux UWB Stack实现——MCPS调度接口(数据结构)
  • 2023Q3数据安全政策、法规、标准及报告汇总(附下载)
  • Ceph入门到精通-iptables 限制多个ip 的多个端口段访问
  • 【C/C++】STL——深度剖析vector容器
  • 如何在idea中隐藏文件或文件夹
  • Scala第二十章节
  • redis的持久化消息队列
  • 分类预测 | MATLAB实现KOA-CNN开普勒算法优化卷积神经网络数据分类预测
  • 用 Pytorch 自己构建一个Transformer
  • Docker安装ActiveMQ
  • 【二】spring boot-设计思想
  • 系统架构设计:7 论企业集成架构设计及应用
  • 【pytorch】多GPU同时训练模型
  • Git 学习笔记 | Git 基本理论
  • 滚动表格封装
  • 【LeetCode高频SQL50题-基础版】打卡第3天:第16~20题
  • 系统压力测试:保障系统性能与稳定的重要措施
  • 常用数据结构和算法
  • C++中使用引用避免内存复制
  • 计算机网络(第8版)-第4章 网络层
  • chromadb 0.4.0 后的改动
  • Windows环境下下载安装Elasticsearch和Kibana
  • 机器学习:随机森林
  • ctfshow-web11(session绕过)
  • 状态模式:对象状态的变化
  • 解耦常用方法