私は今、Data Mapper パターンについて私が信じていることを確認しようとしています。だからここに行きます:
セクション A:
データ マッパーは、別のクラスのオブジェクトを作成、更新、および削除するために使用されるクラスです。例: というクラスとCat
というデータ マッパーCatDataMapper
。と呼ばれるデータベーステーブルcats
。ただし、 と呼ばれる xml ファイルcats.xml
、または と呼ばれるハードコードされた配列である可能性もありますcats
。その Data Mapper の要点は、Cat クラスを使用するビジネス ロジックを、「既存の猫を取得する方法」、または「猫を救う方法」、「猫をどこで救うか」について考えることから解放することです。Data Mapper のユーザーには、getCat(int id)、saveCat(Cat catObject)、deleteCat(Cat catObject) などの明確に定義されたメソッドを備えたブラックボックスのように見えます。
セクション B: 最初に、Cat が CatDataMapper を継承するのが賢明だと思いました。そのような関数を呼び出すと、少し便利になるからです。たとえば、catWithId(int id) のようなメソッドは静的 (クラス メソッド) であり、どこからのデータでも初期化された Cat のインスタンスを返すことができます。また、コード内で猫オブジェクトを操作する場合、myCat->save(); を呼び出すだけで済みます。Data Mapper が保存する場所に保存します (どこにどのように保存するかは気にしません。Data Mapper はこの複雑さをユーザーから隠します)。
結論として、私は今少し混乱しています ;)セクション Aは Data Mapper パターンに有効だと思いますか? また、セクション Bで説明されているように追加で行うとしたら、それは悪いことでしょうか? なんで?