文章目录
- Go 语言设计模式大全,2.8 万 Star 的编程参考手册
- 包含哪些设计模式
- 为什么值得看
- 适合谁
Go 语言设计模式大全,2.8 万 Star 的编程参考手册
最近在 GitHub 上看到一个 Go 语言项目,Star 数已经到了 2.8 万。这项目不是框架,不是库,是一份设计模式参考手册。
写 Go 的程序员应该都有过这种经历——想用某个设计模式,但不确定 Go 里怎么写才地道。查资料吧,网上大部分设计模式的教程都是 Java 或者 C++ 的,直接翻译过来总觉得不对劲。这项目就是解决这个问题的,把常见的设计模式用 Go 语言重新实现了一遍。
包含哪些设计模式
项目把设计模式分成了几大类,覆盖范围挺广的。
创建型模式:工厂方法、建造者、单例、对象池这些,专门处理对象怎么创建的问题。写业务代码的时候经常用到,比如数据库连接池、配置单例这些场景。
结构型模式:装饰器、代理这些,解决对象之间怎么组合。想给现有对象加功能,但不想改原来的代码,就用装饰器。
行为型模式:观察者、策略、模板方法这些,定义对象之间怎么交互。事件系统用观察者,算法切换用策略,都是常见的用法。
并发模式:这是 Go 的强项。有限并行、生成器、扇入扇出这些模式,用 Go 的 goroutine 和 channel 实现特别自然。其他语言里实现起来很麻烦的东西,Go 几行代码就搞定了。
消息模式:发布订阅、Futures & Promises 这些,处理异步通信。微服务之间传消息经常用到。
稳定性模式:熔断、快速失败、限流这些,是分布式系统里常用的东西。服务挂了别拖垮整个系统,得有兜底方案。
性能分析模式:函数计时这种,排查性能问题的时候用得上。
每个模式都有独立的文档,写着实现思路和代码示例。不是那种只讲理论的,看完能直接抄到项目里用。
为什么值得看
第一,解决 Go 程序员的实际问题
很多设计模式的资料都是 Java 或 C++ 写的,直接搬到 Go 里不一定合适。Go 没有继承,没有泛型(现在有了但用法不一样),很多经典写法得调整。这项目用 Go 的语法和惯用法重新写了一遍,看完了就知道 Go 里该怎么写。
第二,覆盖范围广
不只是经典的设计模式,还加了并发模式、稳定性模式这些现代后端开发常用的东西。做微服务、分布式系统的程序员能直接用上。
第三,结构清晰
按类别分好,每个模式一个文件,查起来方便。当字典用就行,不用从头读到尾。写代码遇到问题的时候,Ctrl+F 一搜就能找到。
适合谁
如果你是 Go 程序员,或者正在学 Go,这项目可以当参考手册。写代码遇到设计问题的时候,翻一翻看看别人怎么写的。
特别是做后端开发的,里面很多并发模式和稳定性模式直接能用。不用自己从零想,照着写就行。比如要实现一个任务队列,看看 Bounded Parallelism 模式,几行代码就写好了。
不过要说明的是,这项目更适合有一定基础的程序员。完全零基础的话,可能看着会有点懵。建议先学完 Go 基础语法,再来翻这个。
这项目就是个工具,不是教程。想深入学设计模式还是得看系统的书,但写代码的时候查一查,够用了。
这个。
这项目就是个工具,不是教程。想深入学设计模式还是得看系统的书,但写代码的时候查一查,够用了。