golang设计模式之简单工厂模式

1. 写在前面

在面向对象的编程语言中(如java,C++)设计模式的概念广为人知,应用的也非常广泛。设计模式让我们的代码变得灵活起来,具有很强的扩展性。但在与C语言比肩的Go语言中,设计模式的概念并没有十分突出,甚至很少听到。在Go的开发中,借鉴design pattern的理念同样回味无穷我们的开发带来极大的便利。

相关源代码demo在Github上,可供参考!

2. 简单工厂模式

类图:

和传统的Java等面向对象语言的继承机制不同,在Go语言中并不提倡使用继承,但是在某些场景下要用到继承的话,可以用下面的方式实现继承关系。

type Animal struct { Category string }

type Dog struct { Animal Name string }

简单工厂模式实现起来也比较简单,主要代码如下:

type AnimalFactory struct {
}

func NewAnimalFactory() *AnimalFactory {
    return &AnimalFactory{}
}

func (this *AnimalFactory) CreateAnimal(name string) Action {
    switch name {
    case "bird":
        return &Bird{}
    case "fish":
        return &Fish{}
    case "dog":
        return &Dog{}
    default:
        panic("error animal type")
        return nil
    }
}

相关文章

什么是Go的接口? 接口可以说是一种类型,可以粗略的理解为他...
1、Golang指针 在介绍Golang指针隐式间接引用前,先简单说下...
1、概述 1.1 Protocol buffers定义 Protocol buffe...
判断文件是否存在,需要用到"os"包中的两个函数: os.Stat(...
1、编译环境 OS :Loongnix-Server Linux release 8.3 CPU指...
1、概述 Golang是一种强类型语言,虽然在代码中经常看到i:=1...