タグ付けされた質問 「datamapper」

5
データマッパー、テーブルデータゲートウェイ(ゲートウェイ)、データアクセスオブジェクト(DAO)、リポジトリパターンの違いは何ですか?
デザインパターンのスキルを磨こうとしていますが、これらのパターンの違いは何ですか?それらはすべて同じもののように見えます-特定のエンティティのデータベースロジックをカプセル化して、呼び出し元のコードが基になる永続性レイヤーを認識しないようにします。私の簡単な調査から、それらすべては通常、標準のCRUDメソッドを実装し、データベース固有の詳細を抽象化します。 命名規則(CustomerMapper、CustomerDAO、CustomerGateway、CustomerRepositoryなど)は別として、もしあれば、どのような違いがありますか?違いがある場合、いつどちらを選択しますか? 以前は、次のようなコードを記述しました(単純化された、当然のことですが、通常はパブリックプロパティを使用しません)。 public class Customer { public long ID; public string FirstName; public string LastName; public string CompanyName; } public interface ICustomerGateway { IList<Customer> GetAll(); Customer GetCustomerByID(long id); bool AddNewCustomer(Customer customer); bool UpdateCustomer(Customer customer); bool DeleteCustomer(long id); } CustomerGatewayすべてのメソッドに特定のデータベースロジックを実装するクラスがあります。時にはインターフェイスを使用せず、CustomerGatewayのすべてのメソッドを静的にする(そうすれば、テストが難しくなります)ので、次のように呼び出すことができます。 Customer cust = CustomerGateway.GetCustomerByID(42); これは、Data MapperおよびRepositoryパターンの場合と同じ原則のようです。DAOパターン(ゲートウェイと同じものだと思いますか?)もデータベース固有のゲートウェイを推奨しているようです。 何か不足していますか?同じことを正確に行うために3〜4つの異なる方法があるのは少し奇妙に思えます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.