Katakanlah saya memiliki model-domain dan saya ingin membaca dan menyimpannya dari setiap lapisan kegigihan - sekarang ini mungkin file json tetapi di masa depan itu bisa berupa xml atau database (yang mungkin juga berubah dalam jenisnya ).
Untuk menghasilkan model-domain dari lapisan ketekunan, saya punya implementasi Antarmuka sederhana yang, katakanlah, berisi a getAll()
dan saveAll()
metode. Jika saya ingin beralih ke jenis kegigihan lainnya maka saya dapat dengan mudah mengubah implementasi antarmuka. Namun, di dalam implementasi saya akan menggunakan solusi yang sama sekali berbeda untuk membaca dan menyimpan data sehingga saya harus menggunakan objek yang berbeda dari perpustakaan lain untuk menangani data.
Katakanlah saya menggunakan serializer Json di implementasi pertama, saya kemudian akan instantiate contoh serializer itu dalam implementasi saya secara langsung. Ini kemudian akan mengarah pada implementasi saya secara langsung tergantung pada serializer itu, saya tidak pernah bisa memberikan yang lain. Tapi ini tidak akan mungkin, karena tidak ada antarmuka universal untuk serializers (atau apa pun jenis kegigihan). Jadi jika saya ingin menggunakan serializer yang berbeda, satu-satunya hal yang dapat saya lakukan adalah menulis implementasi yang benar-benar baru alih-alih hanya meneruskan yang lain dari luar.
Jadi tidak apa-apa untuk dependensi kode keras dalam kasus ini? Atau ada pilihan yang lebih baik?