Apa perbedaan antara Data Mapper, Table Data Gateway (Gateway), Data Access Object (DAO) dan pola Repositori?

Saya mencoba memoles keterampilan pola desain saya, dan saya ingin tahu apa perbedaan antara pola-pola ini? Semuanya tampak seperti hal yang sama - merangkum logika basis data untuk entitas tertentu sehingga kode panggilan tidak memiliki pengetahuan tentang lapisan kegigihan yang mendasarinya. Dari...