Hey! Go Design Patterns
Hey! Go Design Patterns

Hey! Go Design Patterns

Tags
Golang
Hey! Go Design Patterns
ithome 2021 ironman
Date
Sep 1, 2021
notion image
大家好,本系列文章探討經典 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
  • Creational 建立模式: 如何有效的生產與管理物件
    • Abstract Factory
    • Builder
    • Factory Method
    • Prototype
    • Singleton
  • Structural 結構模式: 如何設計出低耦合的物件關係
    • Adapter
    • Bridge
    • Composite
    • Decorator
    • Facade
    • Flyweight
    • Proxy
  • Behavioral 行為模式: 如何讓物件互動的更彈性、有效率,職責更清晰
    • Chain of Responsibility
    • Command
    • Interpreter
    • Iterator
    • Mediator
    • Memento
    • Observer
    • State
    • Strategy
    • Template Methodbehavior.
    • Visitor