Apa saja contoh struktur kelas yang baik yang digunakan untuk mengelola akses basis data? Saya penggemar enkapsulasi kelas dan lebih suka wadah (mis. Mobil) untuk tidak melakukan tugas basis data.
Saya juga ingin kemampuan untuk dengan mudah memasukkan hal-hal seperti cache basis data di masa depan.
Saya sering mengambil pola kelas kontainer, lengkap dengan getter dan setter untuk validasi dan akses basis data yang dilakukan oleh satu kelas tunggal. Yang sedang berkata, ini sering dicampur antara keduanya dan menjadi sangat membingungkan.
Maaf jika pertanyaan saya sulit dimengerti; Saya tidak sepenuhnya yakin tentang ketentuan mengenai database. Silakan meminta klarifikasi jika diperlukan.
Jawaban:
Saya lebih suka Pola Repositori untuk merangkum akses data. Singkatnya, repositori bertanggung jawab untuk memuat semua data yang diperlukan untuk objek tertentu. Katakanlah Anda memiliki objek Mobil, seperti dalam contoh Anda. Tetapi semua atribut untuk mobil, membuat, model, tahun, pemilik, fitur (CD player, 4wd dll) disimpan dalam berbagai tabel di seluruh database. Repositori menentukan cara memuat dan menyimpan data. Jika beberapa kueri yang lebih kecil diperlukan, bagus, tetapi hanya pola repositori yang perlu mengetahuinya. Lapisan layanan yang menjalankan repositori hanya perlu tahu repositori mana yang akan dipanggil.
Itu kemudian dapat dikombinasikan dengan pola satuan kerja . Jadi pada contoh Anda, lapisan layanan akan mengatakan ia perlu memuat entitas mobil, ia memiliki semacam pengidentifikasi unik, dan mengirimkan pengenal itu ke repositori. Repositori mengembalikan entitas mobil. Beberapa kode lain memanipulasi entitas mobil dan mengirim entitas itu kembali ke repositori sehingga dapat disimpan.
Jika Anda benar-benar ingin keluar semua, lapisan repositori hanya akan mengekspos antarmuka, seperti ICarRepository. Repositori akan berisi pabrik yang akan digunakan oleh lapisan layanan untuk mendapatkan antarmuka ICarRepository. Semua akses basis data akan disembunyikan di balik antarmuka, yang membuat pengujian unit jauh lebih mudah.
sumber
Saya telah menggunakan Pola Strategi untuk merangkum akses data. Pola ini memungkinkan Anda untuk menyembunyikan jenis penyimpanan yang Anda gunakan di belakang antarmuka umum. Di antarmuka, tentukan metode akses data Anda dengan mengabaikan jenis penyimpanan (file, database, web). Kemudian untuk pilihan penyimpanan Anda saat ini, di kelas yang menyadari antarmuka strategi, terapkan detail akses data. Dengan cara ini aplikasi Anda tidak peduli dengan sumber data yang Anda gunakan.
Anda juga dapat membangun lapisan layanan yang menggunakan contoh strategi penyimpanan data saat ini untuk mendefinisikan lebih detail spesifik aplikasi daripada mencampur akses data dan logika bisnis secara bersamaan.
sumber
Ini adalah contoh dari pola Pabrik basis data;
sumber