3 つの永続化レイヤーに書き込む必要があるシステムを PHP で作成しています。
- 1 つの Web サービス
- 2 つのデータベース (1 つの mysql と 1 つの mssql)
この理由はレガシー システムであり、変更することはできません。
DataMapper パターンを使用したいと考えており、目的を達成するための最良の方法を確立しようとしています。次のようなインターフェースがあります。
<?php
$service = $factory->getService()->create($entity);
?>
以下は、簡潔にするためにいくつかの工夫された短縮されたコードです。
<?php
class Post extends AbstractService
{
protected $_mapper;
public function create(Entity $post)
{
return $this->_mapper->create($post);
}
}
class AbstractMapper
{
protected $_persistence;
public function create(Entity $entity)
{
$data = $this->_prepareForPersistence($entity);
return $this->_persistence->create($data);
}
}
?>
私の質問は、永続化レイヤーが 3 つあるため、それぞれに 3 つのマッパーが必要になる可能性が高いということです。これを機能させるには、クリーンなデザイン パターンにインスパイアされたインターフェイスが必要です。
次の 3 つのオプションがあると思います。
- 3 つのマッパーを Service に挿入し、それぞれで create を呼び出します
- $_mapper は配列/コレクションであり、それぞれに対して create を呼び出して反復します
- $_mapper は実際には、さらなるプロキシとして機能し、それぞれに対して create を呼び出すコンテナ オブジェクトです。
これらのソリューションのそれぞれに何か問題があると思います。これに適合する可能性のあるフィードバック/認識された設計パターンをいただければ幸いです。