# go-design-pattern **Repository Path**: baihr/go-design-pattern ## Basic Information - **Project Name**: go-design-pattern - **Description**: Go 设计模式。 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-08-23 - **Last Updated**: 2024-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # go-design-pattern ## 介绍 设计模式的Go语言实现。 ## 项目结构 一个模式对应一个目录,例如: ```text |- singleton # 单例模式 | |- impl # 实现 | | |- xxx.go | |- main.go # 客户端 |- ... ``` ## 注意 1. 参考《Go语言设计模式》和其他资料,说明包含在README和代码中 2. Go并不支持类和继承这种面向对象的特性,组合虽然看起来像继承,但本质上还是通过 嵌入对象调用方法 ```go package main import "fmt" type Say struct{} func (s Say) Hello() { fmt.Println("hello") } type Man struct { Say } func main() { man := Man{} // 实际上是 man.Say.Hello() man.Hello() } ``` ## 导读 1. [singleton](https://gitee.com/baihr/go-design-pattern/tree/master/singleton), 经过优化的懒汉单例模式 2. [simplefactory](https://gitee.com/baihr/go-design-pattern/tree/master/simplefactory), 使用鞋厂的例子说明简单工厂模式 3. [factorymethod](https://gitee.com/baihr/go-design-pattern/tree/master/factorymethod), 使用工厂方法模式重新实现了鞋厂例子 4. [abstractfactory](https://gitee.com/baihr/go-design-pattern/tree/master/abstractfactory), 随着鞋厂发展,使用抽象工厂模式解决扩展问题 5. [builder](https://gitee.com/baihr/go-design-pattern/tree/master/builder), 以汽车制造的例子说明生成器模式