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

如何在Golang中实现工厂模式创建多类型对象

P粉602998670
发布: 2025-10-31 15:23:02
原创
660人浏览过
Go语言中通过接口和工厂函数实现工厂模式,首先定义Product接口,再由Phone和Laptop结构体实现;接着编写CreateProduct函数根据类型创建对应实例,最后在main中调用工厂生成对象并使用。

如何在golang中实现工厂模式创建多类型对象

在Go语言中实现工厂模式,主要是通过函数或结构体封装对象的创建逻辑,避免在代码中直接使用具体的构造过程。这种方式特别适合需要根据条件创建不同类型的对象的场景。下面介绍如何用Golang实现一个简单的工厂模式来创建多类型对象。

定义公共接口

为了统一管理多种类型,先定义一个接口,作为所有具体类型的共同抽象。

type Product interface {
    GetName() string
    GetPrice() float64
}
登录后复制

这个 Product 接口规定了所有产品必须实现的方法。不同的具体产品类型将实现这些方法。

实现具体类型

接下来编写几个实现了 Product 接口的具体结构体。

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

type Phone struct {
    name  string
    price float64
}

func (p *Phone) GetName() string {
    return p.name
}

func (p *Phone) GetPrice() float64 {
    return p.price
}

type Laptop struct {
    name  string
    price float64
}

func (l *Laptop) GetName() string {
    return l.name
}

func (l *Laptop) GetPrice() float64 {
    return l.price
}
登录后复制

这里定义了两个产品:手机(Phone)和笔记本(Laptop),它们都实现了 GetNameGetPrice 方法。

天工大模型
天工大模型

中国首个对标ChatGPT的双千亿级大语言模型

天工大模型115
查看详情 天工大模型

编写工厂函数

工厂的核心是一个函数,根据输入参数决定返回哪种类型的对象。

func CreateProduct(productType, name string, price float64) (Product, error) {
    switch productType {
    case "phone":
        return &Phone{name: name, price: price}, nil
    case "laptop":
        return &Laptop{name: name, price: price}, nil
    default:
        return nil, fmt.Errorf("unknown product type: %s", productType)
    }
}
登录后复制

这个工厂函数接收类型标识、名称和价格,返回对应的 Product 接口实例。如果传入不支持的类型,会返回错误。

使用示例

在 main 函数中调用工厂创建对象:

func main() {
    phone, err := CreateProduct("phone", "iPhone 15", 999.99)
    if err != nil {
        log.Fatal(err)
    }

    laptop, err := CreateProduct("laptop", "MacBook Pro", 2399.00)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(phone.GetName(), phone.GetPrice())  // iPhone 15 999.99
    fmt.Println(laptop.GetName(), laptop.GetPrice()) // MacBook Pro 2399
}
登录后复制

通过工厂函数,调用方无需知道具体类型的构造细节,只需关心接口行为。新增产品时,只要实现接口并在工厂中添加分支即可,原有代码不用修改。

基本上就这些。这种方式让对象创建更灵活,也更容易维护和扩展。

以上就是如何在Golang中实现工厂模式创建多类型对象的详细内容,更多请关注php中文网其它相关文章!

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

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

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

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