國全譯
原文(英文)鏈接:http://tmrts.com/go-patterns
一、設計模式介紹
設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向對象的軟件開發人員所采用。設計模式是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟件開發人員經過相當長的一段時間的試驗和錯誤總結出來的。
二、golang設計模式
1. 創建模式(Creational Patterns)
名字 | 描述 | |
抽象工廠模式(Abstract Factory) | 提供用於創建相關對象族的接口或抽象方法。 | |
建造者模式(Builder) | 使用簡單對象構建復雜對象 | |
工廠模式(Factory Method) | 將對象的實例化推遲到用於創建實例的專用函數 | |
對象池模式(Object Pool) | 實例化並維護一組相同類型的對象實例 | |
單例模式(Singleton) | 將類型的實例化限制為只能實例一個對象 |
|
2. 結構模式(Structural Patterns)
名字 | 描述 | |
橋接模式(Bridge) | 將接口與其實現分離,以便兩者可以獨立變化 | |
組合模式(Composite) | 封裝並提供對許多不同對象的訪問 | |
裝飾器模式(Decorator) | 靜態或動態地將行為添加到對 |
|
外觀模式(Facade) | 將一種類型用作其他多種類型的API | |
享元模式(Flyweight) | 重用狀態相似或相同的對象的現有實例,以最大程度地減少資源使用 | |
代理模式(Proxy) | 提供對象的替代品以控制其動作 |
3. 行為模式(Behavioral Patterns)
名字 | 描述 | |
責任鏈模式(Chain of Responsibility) | 通過給對象提供更多的機會來處理請求,從而避免將發送者耦合到接收者 | |
命令模式(Command) | 捆綁命令和參數以供以后調用 |
|
中介者模式(Mediator) | 連接對象並充當代理 |
|
備忘錄模式(Memento) | 生成不透明的令牌,該令牌可用於返回到先前的狀態 | |
觀察者模式(Observer) | 提供回調以通知事件或數據更改 | |
注冊模式(Registry) |
跟蹤給定類的所有子類 |
|
狀態模式(State) | 根據其內部狀態封裝不同對象的行為 | |
策略模式(Strategy) | 允許在運行時選擇算法的行為 |
|
模版模式(Strategy) | 定義一個骨架類,該骨架類將某些方法推遲到子類 | |
訪問者模式(Visitor) | 將算法與對其進行操作的對象分開 |
4. 同步模式( Synchronization Patterns)
名字 | 描述 | |
條件變量(Condition Variable) | 提供一種機制,線程可以暫時放棄訪問以等待某種條件 | |
互斥鎖(Lock/Mutex) | 對資源強制實施互斥限制以獲取互斥訪問 |
|
監視器(Monitor) | 互斥量和條件變量模式的組合 | |
讀寫鎖(Read-Write Lock) | 允許並行讀取訪問,但僅對資源的寫入操作具有獨占訪問權限 | |
信號量(Semaphore) | 允許控制對公共資源的訪問 |
5. 並發模式(Concurrency Patterns)
名字 | 描述 | |
N-二道閘(N-Barrier) | 阻止進程在所有N個進程到達障礙之前進行 | |
受限並行(Bounded Parallelism) | 在資源有限的情況下完成大量獨立任務 | |
廣播(Broadcast) | 同時將消息傳送給所有收件人 |
|
協程(Coroutines) | 允許在某些位置掛起和恢復執行的子例程 | |
生成器(Generators) | 一次產生一個值序列 | |
反應器(Reactor) | 解復用同時傳遞給服務處理程序的服務請求,並同步地將它們分派給關聯的請求處理程序 | |
並行(Parallelism) | 完成大量獨立任務 | |
生產者消費者(Producer Consumer) | 將任務與任務執行分離 |
6. 消息傳遞模式(Messaging Patterns)
名字 | 描述 | |
扇入(Fan-In) |
將任務集中到工作接收器(例如服務器) |
|
扇出(Fan-Out) | 在workers(例如生產者)之間分配任務 | |
Futures & Promises | 充當結果的占位符,該結果最初出於同步目的是未知的 | |
發布/訂閱(Publish/Subscribe) | 將信息傳遞給訂閱主題的收件人的集合 | |
推/拉(Push & Pull) | 將消息分發給安排在管道中的多個工作人員 |
7. 穩定模式(Stability Patterns)
名字 | 描述 | |
隔板模式(Bulkheads) | 實施故障遏制原則(即防止級聯故障) | |
斷路器模式(Circuit-Breaker) | 當請求可能失敗時,停止請求流 | |
期限模式(Deadline) | 一旦響應的可能性變低(例如,在等待10秒鍾的頁面刷新之后),客戶端就可以停止等待響應 | |
快速失敗模式(Fail-Fast) | 在請求開始時檢查所需資源的可用性,如果不滿足要求,則失敗 | |
握手模式(Handshaking) | 詢問組件是否可以承受更多的負載,如果不能承受,則請求被拒絕 | |
穩定狀態模式(Steady-State) | 對於每個積累資源的服務,其他一些服務必須回收該資源 |
8. 剖析模式(Profiling Patterns)
名字 | 描述 | |
計時功能(Timing Functions) | 包裝函數並記錄執行 |
9. 成例(Idioms)
名字 | 描述 | |
功能選項(Functional Options) | 允許使用默認設置和慣用替代創建干凈的API |
10. 反模式(Anti-Patterns)
名字 | 描述 | |
級聯故障(Cascading Failures) | 互連零件系統中的故障,其中零件的故障會導致多米諾骨牌效應 |
關注編程之顛,帶來更多go編程知識