大家好,本系列文章探讨经典 Design Patterns 在现代语言 Golang 的演变。虽然小弟是一位还在学习的小小码农,但希望文章能够以相对浅显不高深的角度,让各位对 Design Patterns 更有感触,也欢迎交流讨论,谢谢~
Design Patterns 是一种「经验集成」。Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides 大师们将过往许多问题解决的实作方案整理,进而出了Design Patterns: Elements of Reusable Object-Oriented Software一书,里头统整了 23 种 Patterns。
除了此 23 种经典 Patterns,在 Web 的世界由於对高并发(concurrency)需求相当高,也衍伸出了 Concurrency Patterns ,我选定图解 Java 多线程设计模式来探讨,里头有约 10 种 patterns,来确保大量的并发不产生 race condition、deadlock 等问题。
小弟会将这些资料内化了解,统整成 Golang 系列的文章。大家可能会有些好奇,为什麽 Golang 参考了那麽多 Java 的文章,主要是文章开头说的,Design Patterns 是解决问题的经验集成,这些经典的问题在 Java 时代即存在,那面对这些问题现代语言 Golang 是怎麽设计的呢?是否使一些问题更易於解决?如良葛格大大 - 设计模式不死?一文中所说「我们真正该做的,是在传达经典设计模式之後,多探讨一些结合现代风格的实作」。
由於 Patterns 的写法写起来是都相似的,所以文章中有些 Code 的写法几乎与探讨资料相同,会在相似的 Code 中标注来源,感谢。
(本系列对良葛格大大的文章有着大量的参考,受益良多,也很推荐大家看看大大的部落格!)
在此列出这次铁人每天撰写的目录,也给自己一个目标让自己不迷航 XD。由於对於高并发兴趣挺大所以会先以 Concurrency Patterns 开始,再介绍经典 Design Patterns。
并且会把相关的 Code 放在此 Github - go-design-patterns。
Concurrency 并发模式: 如何让程序高并发,并足够安全,不产生 race condition、dead lock 等问题
Creational 建立模式: 如何有效的生产与管理物件
Structural 结构模式: 如何设计出低耦合的物件关系
Behavioral 行为模式: 如何让物件互动的更弹性、有效率,职责更清晰
<<: [Day 9] Leetcode 917. Reverse Only Letters (C++)
回合移动规则确立 今天主要在撰写/调整游戏的企划内容,在多日的思考後终於定下来移动的基本规则。 有别...
今天来用checkbox首先先在xml新增 <CheckBox android:id=&quo...
Web API -- Application Programming Interface for ...
接下来讲讲Entity Framework 如何建立... 首先先开启visual studio.....
这篇其实是在Go官方网站的一篇关於并发的解决方案 不过文章有点旧了,是在2014写的 要自己去翻可能...