Apa yang akan menjadi pola desain terbaik untuk masalah ini:
Saya memiliki Objek A. Objek A dapat didaftarkan atau dihapus dari database tergantung pada permintaan pengguna.
Validasi data dilakukan sebelum pendaftaran atau penghapusan objek. Ada seperangkat aturan yang harus diperiksa sebelum objek dapat didaftarkan dan seperangkat aturan untuk dihapus. Beberapa aturan ini umum untuk kedua operasi.
Sejauh ini, saya pikir pola desain Rantai Tanggung Jawab paling cocok tapi saya kesulitan mengimplementasikannya.
design-patterns
melodui
sumber
sumber
Jawaban:
Biasanya saya akan menggunakan kelas validator terpisah untuk memvalidasi setiap kasus penggunaan. Misalnya sebelum menambahkan produk ke database, saya akan menggunakan AddProductValidator untuk memvalidasi aturan bisnis, sebelum menghapus produk, saya akan menggunakan DeleteProductValidator untuk memvalidasi, dll. Aturan bisnis umum dapat diekstraksi ke kelas spesifikasi (pola Spesifikasi) dan dibagikan oleh kelas validator
Untuk menyusun kelas validator, saya ikuti pendekatan di sini: http://lostechies.com/jimmybogard/2007/10/24/entity-validation-with-visitors-and-extension-methods/
Jika Anda menggunakan .NET, saya pikir Anda mungkin ingin mempertimbangkan Validasi Lancar ( https://github.com/JeremySkinner/FluentValidation ). Saya pikir itu cukup keren dan cukup dekat dengan artikel yang saya sebutkan di atas
sumber
Seperti dijelaskan, saya mungkin akan mengimplementasikan tipe opsi . Dengan begitu saya bisa mengembalikan "Tidak Ada" atau nilai yang divalidasi (mungkin malas) tapi itu detail implementasi dan mengarah dengan baik ke ide menggunakan Dekorator .
Tentu saja jika antarmuka menjadi jelek, saya akan menggunakan fasad .
sumber