iT邦幫忙

2021 iThome 鐵人賽

DAY 1
2
Software Development

Hey! Go Design Patterns系列 第 1

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 2:Single Threaded Execution Pattern,門就只有一個大家好好排隊啊~
系列文
Hey! Go Design Patterns30

尚未有邦友留言

立即登入留言