首页 > 后端开发 > Golang > 正文

Golang TemplateMethod模板方法模式流程控制示例

P粉602998670
发布: 2025-09-30 20:01:02
原创
731人浏览过
答案:Go语言通过接口和组合实现模板方法模式,定义FileBuilder接口和Template结构体,封装构建文件的固定流程。具体步骤由JSONBuilder和XMLBuilder等实现,分别准备数据、生成内容并保存文件。在main函数中,Template实例复用Build()流程,依次调用不同构建器的具体方法,输出对应结果。该模式分离了不变流程与可变实现,提升了代码复用性和扩展性。

golang templatemethod模板方法模式流程控制示例

在Go语言中实现模板方法模式,关键是把算法的骨架定义在父级(基类)中,而将具体步骤延迟到子类中实现。由于Go不支持继承,我们通过接口和组合来模拟这一行为。下面是一个清晰的示例,展示如何用Go实现模板方法模式并控制流程。

定义模板接口与结构体

我们设计一个构建文件的流程:准备数据、生成内容、保存文件。这个流程固定,但每个步骤的具体实现可以不同。

package main

import "fmt"

// 定义流程的接口
type FileBuilder interface {
    PrepareData()
    GenerateContent()
    SaveFile()
}

// 模板结构体,封装固定的执行流程
type Template struct {
    builder FileBuilder
}

func (t *Template) Build() {
    fmt.Println("开始构建文件...")
    t.builder.PrepareData()
    t.builder.GenerateContent()
    t.builder.SaveFile()
    fmt.Println("文件构建完成。")
}
登录后复制

实现具体构建器

现在我们实现两个具体的构建器:JSON文件构建器和XML文件构建器。

// JSON 构建器
type JSONBuilder struct{}

func (j *JSONBuilder) PrepareData() {
    fmt.Println("准备 JSON 数据...")
}

func (j *JSONBuilder) GenerateContent() {
    fmt.Println("生成 JSON 内容...")
}

func (j *JSONBuilder) SaveFile() {
    fmt.Println("保存为 data.json")
}

// XML 构建器
type XMLBuilder struct{}

func (x *XMLBuilder) PrepareData() {
    fmt.Println("准备 XML 数据...")
}

func (x *XMLBuilder) GenerateContent() {
    fmt.Println("生成 XML 内容...")
}

func (x *XMLBuilder) SaveFile() {
    fmt.Println("保存为 data.xml")
}
登录后复制

使用模板方法控制流程

在主函数中,我们可以复用相同的流程模板,传入不同的构建器实例。

启科网络PHP商城系统
启科网络PHP商城系统

启科网络商城系统由启科网络技术开发团队完全自主开发,使用国内最流行高效的PHP程序语言,并用小巧的MySql作为数据库服务器,并且使用Smarty引擎来分离网站程序与前端设计代码,让建立的网站可以自由制作个性化的页面。 系统使用标签作为数据调用格式,网站前台开发人员只要简单学习系统标签功能和使用方法,将标签设置在制作的HTML模板中进行对网站数据、内容、信息等的调用,即可建设出美观、个性的网站。

启科网络PHP商城系统 0
查看详情 启科网络PHP商城系统

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

func main() {
    template := &Template{}

    // 构建 JSON 文件
    template.builder = &JSONBuilder{}
    template.Build()

    fmt.Println()

    // 构建 XML 文件
    template.builder = &XMLBuilder{}
    template.Build()
}
登录后复制

输出结果:

开始构建文件...
准备 JSON 数据...
生成 JSON 内容...
保存为 data.json
文件构建完成。

开始构建文件...
准备 XML 数据...
生成 XML 内容...
保存为 data.xml
文件构建完成。
登录后复制
说明

模板方法模式的核心是“封装不变,扩展可变”。在这个例子中,Build() 方法定义了不可变的流程顺序,而 PrepareData、GenerateContent、SaveFile 等步骤由具体实现决定。这种方式提高了代码复用性,也便于扩展新的文件类型。

基本上就这些,不复杂但容易忽略细节。

以上就是Golang TemplateMethod模板方法模式流程控制示例的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号