これは、データ マッピング パターンのクラス構造の例です (簡略化)。save メソッドと find メソッドは技術的に具象クラスに実装されていますが、まだ何もしていないことに注意してください。これを回避するための代替手段は何ですか?私が現在使用しているオプションの 1 つは、インターフェイスを実装し、すべてのメソッドに対して例外をスローする抽象 DataMapperAbstract クラスです。その後、すべての具体的なデータ マッパーは、使用する関数を実装するだけで済みます。個人的には、メソッドごとに別のインターフェース(DataMapper_FindInterface、DataMapper_SaveInterface、DataMapper_DeleteInterfaceなど)を作ろうと思ったのですが、ちょっと臭そうです。
interface DataMapperInterface
{
public function find($params);
public function save($object);
public function delete($object);
}
class DataMapper_User implements DataMapperInterface
{
public function find($params)
{
//Execute code to retrieve data from data source
return someDataRetrievalMethod($params);
}
public function save($object)
{
throw new Exception('Method not yet implemented.');
}
public function delete($object)
{
throw new Exception('Method not yet implemented.');
}
}