DAY 1:Hey! Go Design Patterns

大家好,本系列文章探讨经典 Design Patterns 在现代语言 Golang 的演变。虽然小弟是一位还在学习的小小码农,但希望文章能够以相对浅显不高深的角度,让各位对 Design Patterns 更有感触,也欢迎交流讨论,谢谢~

什麽是 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


<<:  [Day 9] Leetcode 917. Reverse Only Letters (C++)

>>:  每个专案的程序码都该这样开始

Dungeon Mizarka 019

回合移动规则确立 今天主要在撰写/调整游戏的企划内容,在多日的思考後终於定下来移动的基本规则。 有别...

Android学习笔记24

今天来用checkbox首先先在xml新增 <CheckBox android:id=&quo...

那些被忽略但很好用的 Web API / 结语

Web API -- Application Programming Interface for ...

ASP.NET MVC 从入门到放弃(Day20) -MVC模型(Model) Entity Framework

接下来讲讲Entity Framework 如何建立... 首先先开启visual studio.....

Go Concurrency Patterns: Pipelines and cancellation

这篇其实是在Go官方网站的一篇关於并发的解决方案 不过文章有点旧了,是在2014写的 要自己去翻可能...