一起幫忙解決難題,拯救IT 人的一天
文章推薦指數: 80 %
Go Design Patterns. Hey! Go Design Patterns 系列第1 篇. 髒桶子York Lin. 3 個月前‧ 190 瀏覽. 2. 大家好,本系列文章探討經典Design Patterns 在現代語言Golang 的 ...
2021iThome鐵人賽
DAY
1
2
SoftwareDevelopment
Hey!GoDesignPatterns系列第
1篇
DAY1:Hey!GoDesignPatterns
13th鐵人賽
golang
designpattern
concurrency
software
髒桶子YorkLin
2021-09-1423:58:24208瀏覽
大家好,本系列文章探討經典DesignPatterns在現代語言Golang的演變。
雖然小弟是一位還在學習的小小碼農,但希望文章能夠以相對淺顯不高深的角度,讓各位對DesignPatterns更有感觸,也歡迎交流討論,謝謝~
什麼是DesignPatterns?
DesignPatterns是一種「經驗集成」。
ErichGamma、RichardHelm、RalphJohnson、JohnVlissides大師們將過往許多問題解決的實作方案整理,進而出了DesignPatterns:ElementsofReusableObject-OrientedSoftware一書,裡頭統整了23種Patterns。
除了此23種經典Patterns,在Web的世界由於對高併發(concurrency)需求相當高,也衍伸出了ConcurrencyPatterns,我選定圖解Java多線程設計模式來探討,裡頭有約10種patterns,來確保大量的併發不產生racecondition、deadlock等問題。
探討資料
書-Go語言並發之道
書-圖解Java多線程設計模式
良葛格大大-非關語言:設計模式
mohuishou大大-Go设计模式
Ressmix大大-透彻理解Java并发编程
lotusirous大大-go-concurrency-patterns
小弟會將這些資料內化了解,統整成Golang系列的文章。
大家可能會有些好奇,為什麼Golang參考了那麼多Java的文章,主要是文章開頭說的,DesignPatterns是解決問題的經驗集成,這些經典的問題在Java時代即存在,那面對這些問題現代語言Golang是怎麼設計的呢?是否使一些問題更易於解決?如良葛格大大-設計模式不死?一文中所說「我們真正該做的,是在傳達經典設計模式之後,多探討一些結合現代風格的實作」。
由於Patterns的寫法寫起來是都相似的,所以文章中有些Code的寫法幾乎與探討資料相同,會在相似的Code中標注來源,感謝。
(本系列對良葛格大大的文章有著大量的參考,受益良多,也很推薦大家看看大大的部落格!)
文章目錄
在此列出這次鐵人每天撰寫的目錄,也給自己一個目標讓自己不迷航XD。
由於對於高併發興趣挺大所以會先以ConcurrencyPatterns開始,再介紹經典DesignPatterns。
並且會把相關的Code放在此Github-go-design-patterns。
Concurrency併發模式:如何讓程式高併發,並足夠安全,不產生racecondition、deadlock等問題
DAY2:SingleThreadedExecutionPattern,門就只有一個大家好好排隊啊~
DAY3:Read-Write-LockPattern,三人成虎,一人打虎!
DAY4:GuardedSuspensionPattern,你不會死的,因為我會保護你
DAY5:Thread-Per-MessagePattern,預備...發射!
DAY6:FeaturePattern,我把未來託付給你了!
DAY7:Fan-OutFan-InPattern,看吧世界!這就是多人解決的力量!
DAY8:ProducerConsumerPattern,點菜了,三份穿褲子的豬,一盤熱空氣,把牛變成鱒魚
DAY9:WorkerPoolPattern,就。
很。
Pool。
DAY10:Two-phaseTerminationPattern,我就跟你說不要亂拔電源!
DAY11:Thread-SpecificStoragePattern,高併發的多重宇宙空間
DAY12:ConcurrencyPatterns融會貫通+GracefulShutdown,正確關閉各個宇宙的次元門
Creational建立模式:如何有效的生產與管理物件
AbstractFactory
Builder
FactoryMethod
Prototype
Singleton
Structural結構模式:如何設計出低耦合的物件關係
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Behavioral行為模式:如何讓物件互動的更彈性、有效率,職責更清晰
ChainofResponsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
TemplateMethodbehavior.
Visitor
留言
追蹤
檢舉
下一篇
DAY2:SingleThreadedExecutionPattern,門就只有一個大家好好排隊啊~
系列文
Hey!GoDesignPatterns
共30篇
目錄
RSS系列文
訂閱系列文
18人訂閱
26
DAY26:ProxyPattern,讓代理人操作實際的物件
27
DAY27:ChainofResponsibility,將實作透過串串樂串起來
28
DAY28:CommandPattern,將動作已指令一個一個完成
29
DAY29:IteratorPattern,迭代各種不同的物件
30
DAY30:StrategyPattern,選定不同的策略來執行
完整目錄
尚未有邦友留言
立即登入留言
iT邦幫忙鐵人賽
參賽組數
1087組
團體組數
52組
累計文章數
20470篇
完賽人數
572人
鐵人賽最新文章
gotodie?那個goto到底能不能用啊?
2021/12/12更新
予焦啦!一夢終須醒......
盤點清查與檢測掃描-資通安全健診
[13th][Day23]httpresponseheader(下)
[13th][Day22]httpresponseheader(上)
[13th][Day21]golangcontext
股票怎麼選?掌握這原則,你也能找到強勢股
Gitpush
盤點清查與檢測掃描-安全性檢測
前往鐵人賽
技術推廣專區
[Day2]抓取每日收盤價
[Day1]基本工具安裝
利用python取得永豐銀行API的Nonce
[Day03]tinyML開發板介紹
永豐金融API測試員
[Day01]在享受tinyML這道美食之前
[Day3]使用ta-lib製作指標
[Day4]函數打包與買進持有報酬率試算
計算API所需要的參數:HashID
計算API所需要的參數:IV
前往鐵人賽
熱門問題
公司想要客製化一套ERP系統該選擇軟體開發?套裝系統?還是自行設立部門?
軟體工程師會被監控嗎
我有一個客戶中了mljx病毒勒索950美金我免費轉讓有人要接嗎?
訂房網站DB架構
(以解決)請問GMAIL群組.假如公司之前有業務群[email protected].有新職員收不到這個.如何把新業務加入
加班提醒視窗
想找PDF編輯工具,Adobe太貴了,請問還有其他推薦的替代方案嗎?
家中的網路配置
切割vlan網段方式
【已解決】如何安裝舊版本的VS2019
IT邦幫忙
站方公告
【2021iThome鐵人賽】登登登!究竟獎落誰家,2021iThome鐵人賽得獎名單正式揭曉
熱門tag
看更多
13th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
2018鐵人賽
javascript
2017鐵人賽
windows
php
python
windowsserver
linux
c#
程式設計
資訊安全
css
vue.js
sql
分享
熱門回答
公司想要客製化一套ERP系統該選擇軟體開發?套裝系統?還是自行設立部門?
軟體工程師會被監控嗎
想找PDF編輯工具,Adobe太貴了,請問還有其他推薦的替代方案嗎?
家中的網路配置
(以解決)請問GMAIL群組.假如公司之前有業務群[email protected].有新職員收不到這個.如何把新業務加入
RedhatEnterpriselinux5.5安裝Oracle問題
MYSQL如何將欄位中的json陣列資料拆分出來
防火牆如何設定DenyPolicy,以提高資安機制?
請問目前php8版本的問題
切割vlan網段方式
熱門文章
予焦啦!一夢終須醒......
gotodie?那個goto到底能不能用啊?
盤點清查與檢測掃描-資通安全健診
再增加五隻狗勾
自己在家接收來自飛機的ADS-B訊號!
2021/12/12更新
第七隻狗勾
第九隻狗勾
第六隻狗勾
第八隻狗勾
一週點數排行
更多點數排行
海綿寶寶(antijava)
㊣浩瀚星空㊣(yoching)
居然解出來了(partyyaya)
raytracy(raytracy)
ccenjor(ccenjor)
mathewkl(mathewkl)
japhenchen(japhenchen)
純真的人(jer5173)
小山丘(a243318490)
fillano(fillano)
×
At
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{result.label}}
{{result.account}}
關閉
延伸文章資訊
- 1senghoo/golang-design-pattern: 设计模式Golang实现 - GitHub
... 实现-《研磨设计模式》读书笔记. Contribute to senghoo/golang-design-pattern development by creating an accou...
- 2一起幫忙解決難題,拯救IT 人的一天
Go Design Patterns. Hey! Go Design Patterns 系列第1 篇. 髒桶子York Lin. 3 個月前‧ 190 瀏覽. 2. 大家好,本系列文章探討經典D...
- 3Design Patterns in Go - Medium
I use this pattern in Go very often. And I think Golang is so suitable for this pattern. In this ...
- 4[Golang] Design Pattern | PJCHENder 未整理筆記
在Go 中需要為某些struct (通常是一些設定),可以同時有預設值的,但有希望可以客製化設定時,可以使用這個方式:.
- 5Common anti-patterns in Go - DeepSource
A list of anti-patterns you should avoid while writing code in Golang. Insights Go. Header image....