登录
首页 >  Golang >  Go教程

Golang工厂模式实现对象动态创建

时间:2025-10-14 09:21:44 402浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Golang工厂模式动态创建对象实例》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


工厂方法模式通过接口和函数解耦对象创建与使用,Go语言中定义Shape接口及Circle、Rectangle实现,再通过ShapeFactory根据类型字符串动态创建对应实例,新增类型只需扩展工厂判断分支,符合开闭原则,结合映射表可优化大量类型判断。

Golang工厂方法模式动态对象创建示例

工厂方法模式用于解耦对象的创建与使用,特别适合需要动态创建不同类型的对象的场景。在 Go 语言中,虽然没有类和继承的概念,但通过接口和函数可以很好地实现工厂方法模式。

定义产品接口

我们先定义一个统一的产品接口,不同的具体类型将实现这个接口。

<strong>type Shape interface {</strong>
    Draw() string
<strong>}</strong>

接下来实现几个具体的结构体:

<strong>type Circle struct{}</strong>

func (c *Circle) Draw() string {
    return "Drawing a circle"
}

<strong>type Rectangle struct{}</strong>

func (r *Rectangle) Draw() string {
    return "Drawing a rectangle"
}

定义工厂函数

工厂函数根据输入参数返回对应的 Shape 实例。这是工厂方法的核心。

<strong>type ShapeFactory struct{}</strong>

func (f *ShapeFactory) CreateShape(shapeType string) Shape {
    switch shapeType {
    case "circle":
        return &Circle{}
    case "rectangle":
        return &Rectangle{}
    default:
        panic("Unknown shape type")
    }
}

使用示例

下面演示如何使用工厂来动态创建对象。

func main() {
    factory := &ShapeFactory{}

    shapes := []string{"circle", "rectangle", "circle"}

    for _, s := range shapes {
        shape := factory.CreateShape(s)
        fmt.Println(shape.Draw())
    }
}

输出结果为:

Drawing a circle
Drawing a rectangle
Drawing a circle

扩展性说明

新增形状时只需添加新结构体并实现 Shape 接口,然后在工厂函数中加入判断分支。调用代码无需修改,符合开闭原则。

如果类型较多,可结合映射表注册机制进一步优化,避免大量 switch 判断。

基本上就这些。Go 的接口和组合机制让工厂模式实现更简洁,不需要复杂的继承结构也能达到目的。

文中关于golang,接口,工厂模式,解耦,动态创建对象的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Golang工厂模式实现对象动态创建》文章吧,也可关注golang学习网公众号了解相关技术文章。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>