Pertimbangkan dua kelas Dog
dan Cat
keduanya sesuai dengan Animal
protokol (dalam hal bahasa pemrograman Swift. Itu akan menjadi antarmuka dalam Java / C #).
Kami memiliki layar yang menampilkan daftar campuran anjing dan kucing. Ada Interactor
kelas yang menangani logika di balik layar.
Sekarang kami ingin menyajikan peringatan konfirmasi kepada pengguna ketika ia ingin menghapus kucing. Namun, anjing harus segera dihapus tanpa pemberitahuan. Metode dengan kondisional akan terlihat seperti ini:
func tryToDeleteModel(model: Animal) {
if let model = model as? Cat {
tellSceneToShowConfirmationAlert()
} else if let model = model as? Dog {
deleteModel(model: model)
}
}
Bagaimana kode ini dapat di refactored? Jelas baunya
Dog
danCat
digambarkan sebagai kelas, sedangkanAnimal
protokol yang diterapkan oleh masing-masing kelas tersebut. Jadi ada sedikit ketidakcocokan antara pertanyaan dan jawaban Anda.