Open2
[DDD] 腐敗防止層 (ANTICORRUPTION LAYER)
概要
- 他システムとの統合における変換層
- レガシーなシステムが提供するモデルを新しいシステム上で取り扱うための設計
なぜこの設計が必要なのか
- 異なるシステムは同じ概念ドメインモデルを使用していない(可能性がある)
- 他のシステムのモデルに適合させることで新しいシステムのモデルが崩壊してしまう(可能性がある)
変換層が行うこと
- 異なるシステムの2つのモデル間の両方向の変換
- 他システムへのメッセージを送信する仕組みではなく、モデルやプロトコルが持つ概念オブジェクトやアクションを変換する仕組み
参考資料
エリック・エヴァンスのドメイン駆動設計 腐敗防止層 (ANTICORRUPTION LAYER)
腐敗防止層の構成例
以下を組み合わせる
- FACADE(ファサード)
- Adapter(アダプタ)
- 変換サービス
- (システム間の通信)
FACADE
- サブシステムのための代替インタフェースを提供する
- クライアントのためにアクセスを簡略化して使いやすくする
- 変換層は新システム側にあるがファサードは他システム側に属する
Adapter
- Adapterにリクエスを送るとセマンティクス上で同等なメッセージに変換してAdapteeに送る
- モデル間の変換を行う役割を持っている
- デザインパターン(GoF本)におけるアダプタとは異なる
- アダプトするインタフェースを選ぶことができる(システムを作っているというコンテキストでは、自分達で適切なインタフェースを作成する自由があるはず)
- 適合される側はオブジェクトでもない
変換サービス
- 概念オブジェクト、データの実際の変換処理を担当する
- 変換サービスはAdapterに所属する
参考資料
エリック・エヴァンスのドメイン駆動設計 腐敗防止層 (ANTICORRUPTION LAYER)