
Gofのプログラミングデザインパターンは23種類ありましたが、それ以外でもプログラミングの設計パターンは存在します。
比較的有名なものをカテゴリ別に紹介したいと思います。
1. アーキテクチャ系パターン(システム構造レベル)
1. MVC(Model-View-Controller)
・Model(データ)
・View(表示)
・Controller(制御)
上記を分離して構成されるアーキテクチャ構造です。
WebアプリやGUIで定番のパターン。
2. MVP(Model-View-Presenter)
MVCの「View」のロジックを「Presenter」に移してテストしやすくする。
3. MVVM(Model-View-ViewModel)
「View」と「データバインディング」を自動化するパターン(ReactやVueの基礎パターン)。
4. Flux / Redux パターン
単一の状態ストアと一方向データフローのパターン。
Reactなどのフロントで主流です。
5. Layered Architecture(レイヤードアーキテクチャ)
・Presentation
・Application
・Domain
・Infrastructure
上記の階層化パターン。
6. Hexagonal Architecture(六角形アーキテクチャ)
アプリのコアを外部依存から切り離すパターン。
別名「Ports and Adapters」とも言う。
7. lean Architecture(クリーンアーキテクチャ)
Robert C. Martin提唱。依存の矢印を内側に限定するパターン。
2. 並行処理・リアクティブ系パターン
8. Reactor Pattern
イベントループを使って非同期処理をさばくパターン。
Node.jsやNginxの根幹で使われている。
9. Proactor Pattern
非同期I/Oの完了をハンドルするパターン。
Windows I/O Completion Portsなどで使われてます。
10. Actor Model(アクターモデル)
各オブジェクトが「メッセージ」を送り合って非同期動作するパターン。
Erlang / Akka / Orleansなどが採用してる。
11. Observer + Reactive Stream(リアクティブ拡張)
FlowやRxJSなど、ストリームデータを購読して変化に反応。
3. ドメイン駆動設計(DDD)関連パターン
12. Entity / Value Object / Aggregate / Repository
ビジネスルールを明確に分離するためのモデリング手法のパターン。
13. Domain Service / Application Service
ビジネスロジックの責務を整理するための層のパターン。
14. Specification Pattern
条件(仕様)をオブジェクトとして表現・組み合わせ可能にするパターン。
15. Factory / Builder(DDD版)
複雑なドメインオブジェクトを生成する責務を外出しするパターン。
4. マイクロサービス・クラウド時代のパターン
16. Circuit Breaker(サーキットブレーカー)
外部サービスが落ちたらリトライを止めるパターン。
Netflix Hystrixなどで使われている。
17. Retry / Timeout / Bulkhead
信頼性とスループットを保つための耐障害パターン。
18. Saga Pattern
分散トランザクションをローカル操作+補償処理で扱うパターン。
19. Event Sourcing
状態をイベント履歴から再構築するパターン(監査・再生可能)。
20. CQRS(Command Query Responsibility Segregation)
読み取りと書き込みのモデルを分離するパターン。
5. UI/UX系パターン
21. Stateful Widget Pattern
状態をコンポーネント内部で管理するパターン。
Flutterなどで使われている。
22. Container-Presenter Pattern(Smart/Dumb Components)
UIとロジックを分離するパターン。
Reactのよくある構造。
23. Command Palette Pattern
ユーザー操作をテキストコマンドで統一するパターン。
VSCodeなどで使われている。
6. その他のモダンパターン
24. Dependency Injection(DI)
依存を外部から注入するパターン。
Spring, Laravelなどで使われている。
25. Service Locator
依存オブジェクトを中央管理する仕組み。
26. Null Object Pattern
nullの代わりに何もしないオブジェクトを使うパターン。
27. Lazy Initialization / Proxy Cache
遅延ロードやキャッシュの最適化に使うパターン。
28. Event Bus / Pub-Sub
オブジェクト間通信を疎結合にするパターン。
29. Pipeline / Chain of Responsibility(拡張版)
処理を順に流すデータ処理フロー構造のパターン。
ざっくりまとめ
| 分類 |
代表例 |
主な用途 |
| アーキテクチャ系 |
MVC, MVVM, Clean |
アプリ全体の構造 |
| 並行処理系 |
Reactor, Actor |
非同期・イベント駆動 |
| DDD系 |
Entity, Repository |
ビジネスドメイン設計 |
| マイクロサービス系 |
Saga, CQRS |
分散システム制御 |
| UI系 |
Container-Presenter |
表示ロジック分離 |
| その他 |
DI, Null Object |
汎用的な設計改善 |
あとがき
カテゴリで6種類、パターンが全部で29種類もあります。
せっかくなので、これらのパターンもそれぞれ詳細を解説してみたいと思いますので、
気になる人は明日からのブログを毎日見て、理解してみてください。
0 件のコメント:
コメントを投稿