
パターンに移動します
GO言語の慣用設計とアプリケーションパターンのキュレーションコレクション。
TMRTS/GO-PATTERNSのフォークですが、他の素晴らしいフォークと融合しました。パターンインエクサムプルを使用することができます
マージされたレポ
- マージ:https://github.com/nynicg/go-patterns
- マージ:https://github.com/weichou1229/go-patterns
- マージ:https://github.com/jianhan/go-patterns
- マージ:https://github.com/sakari-ai/go-patterns
- マージ:https://github.com/restudy/go-patterns
創造的なパターン
| パターン | 説明 | 状態 |
|---|
| 抽象工場 | 揚げたオブジェクトのファミリを作成するためのインターフェイスを提供します | ✔ |
| ビルダー | 単純なオブジェクトを使用して複雑なオブジェクトを構築します | ✔ |
| 工場法 | インスタンスを作成するための特殊な機能へのオブジェクトのインスタンス化をdefers | ✔ |
| オブジェクトプール | 同じタイプのオブジェクトのインスタンスのグループをインスタンス化および維持する | ✔ |
| シングルトン | タイプのインスタンス化を1つのオブジェクトに制限します | ✔ |
構造パターン
| パターン | 説明 | 状態 |
|---|
| 橋 | インターフェイスを実装から切り離して、2つが独立して変化するように | ✔ |
| 複合 | いくつかの異なるオブジェクトへのアクセスをカプセル化して提供します | ✔ |
| デコレーター | 静的または動的にオブジェクトに動作を追加します | ✔ |
| ファサード | 他の多くのタイプをAPIとして使用する | ✔ |
| フライ級 | リソースの使用を最小限に抑えるために、同様/同一の状態のオブジェクトの既存のインスタンスを再利用する | ✔ |
| プロキシ | オブジェクトがアクションを制御するための代理を提供します | ✔ |
| アダプタ | オブジェクトがアクションを制御するための代理を提供します | ✔ |
行動パターン
| パターン | 説明 | 状態 |
|---|
| 責任の連鎖 | オブジェクト以上のものにリクエストを処理する機会を与えることで、送信者をレシーバーに結合することを避けます | ✔ |
| 指示 | 後で電話するコマンドと引数をバンドルします | ✔ |
| メディエーター | オブジェクトを接続し、プロキシとして機能します | ✔ |
| 記念 | 前の状態に戻るために使用できる不透明なトークンを生成する | ✔ |
| オブザーバー | データへのイベント/変更の通知のためのコールバックを提供します | ✔ |
| レジストリ | 特定のクラスのすべてのサブクラスを追跡します | ✔ |
| 州 | その内部状態に基づいて、同じオブジェクトのさまざまな動作をカプセル化する | ✔ |
| 戦略 | アルゴリズムの動作を実行時に選択できます | ✔ |
| テンプレート | サブクラスにいくつかの方法を扱うスケルトンクラスを定義します | ✔ |
| ビジター | 動作するオブジェクトからアルゴリズムを分離します | ✔ |
| 通訳者 | 独自の言語または構成されたコマンドを解釈します | ✔ |
同期パターン
| パターン | 説明 | 状態 |
|---|
| 条件変数 | ある状態を待つために、スレッドが一時的にアクセスを放棄するメカニズムを提供します | ✘ |
| ロック/ミューテックス | リソースの相互除外制限を強制して、排他的アクセスを取得する | ✘ |
| モニター | ミューテックスと条件変数パターンの組み合わせ | ✘ |
| 読み取りワイトロック | 並列読み取りアクセスを許可しますが、リソースへの書き込み操作に関する排他的アクセスのみ | ✔ |
| セマフォ | 一般的なリソースへのアクセスを制御できます | ✔ |
並行性パターン
| パターン | 説明 | 状態 |
|---|
| Nバリア | すべてのnプロセスが障壁に到達するまで、プロセスが進むのを防ぎます | ✔ |
| 境界並列性 | リソース制限のある多数の独立したタスクを完了します | ✔ |
| 放送 | すべての受信者に同時にメッセージを転送します | ✘ |
| コルーチン | 特定の場所で実行を中断して再開できるサブルーチン | ✘ |
| ジェネレーター | 一度に1つの値のシーケンスを生成します | ✔ |
| 原子炉 | Demultiplexesサービスリクエストは、サービスハンドラーに同時に配信され、関連するリクエストハンドラーに同期して発送します | ✘ |
| 並列性 | 多数の独立したタスクを完了します | ✔ |
| プロデューサーの消費者 | タスクをタスク実行から分離します | ✔ |
メッセージングパターン
| パターン | 説明 | 状態 |
|---|
| ファンイン | ファネルタスクワークシンク(例:サーバー) | ✔ |
| ファンアウト | 労働者の間でタスクを配布する(例えば、生産者) | ✔ |
| 先物と約束 | 同期の目的で最初に不明な結果の場所ホルダーとして機能する | ✔ |
| 公開/購読します | トピックを購読した受信者のコレクションに情報を渡す | ✔ |
| プッシュ&プル | パイプラインに配置された複数の労働者にメッセージを配布します | ✘ |
安定性パターン
| パターン | 説明 | 状態 |
|---|
| バルクヘッド | 障害封じ込めの原則を強制します(つまり、障害のカスケードを防ぎます) | ✘ |
| サーキットブレーカー | リクエストが失敗する可能性が高い場合、リクエストのフローを停止します | ✔ |
| 締め切り | 応答の確率が低くなったら(たとえば、ページの更新を10秒待った後)、クライアントが応答を待つのを止めることができます。 | ✔ |
| フェイルファースト | 要求の開始時に必要なリソースの可用性をチェックし、要件が満たされていない場合に失敗します | ✘ |
| ハンドシェイク | コンポーネントがこれ以上負荷を取ることができるかどうかを尋ねます。できない場合、リクエストは拒否されます | ✘ |
| 定常状態 | リソースを蓄積するすべてのサービスについて、他のサービスの一部はそのリソースをリサイクルする必要があります | ✘ |
プロファイリングパターン
| パターン | 説明 | 状態 |
|---|
| タイミング機能 | 関数をラップして実行を記録します | ✔ |
イディオム
| パターン | 説明 | 状態 |
|---|
| 機能オプション | 正気のデフォルトと慣用的なオーバーライドを使用して、きれいなAPIを作成できます | ✔ |
アンチパターン
パターン実装
Go-Pattern-Examples