5
รูปแบบ Data Mapper, Table Data Gateway (Gateway), Data Access Object (DAO) และ Repository แตกต่างกันอย่างไร
ฉันกำลังพยายามฝึกฝนทักษะรูปแบบการออกแบบของฉันและฉันก็สงสัยว่าความแตกต่างระหว่างรูปแบบเหล่านี้คืออะไร? ทั้งหมดนี้ดูเหมือนว่าเป็นสิ่งเดียวกัน - สรุปลอจิกฐานข้อมูลสำหรับเอนทิตีเฉพาะดังนั้นรหัสการโทรจึงไม่มีความรู้เกี่ยวกับเลเยอร์การคงอยู่ที่อยู่เบื้องหลัง จากการวิจัยสั้น ๆ ของฉันพวกเขาทั้งหมดมักใช้วิธีการ 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); …