দুটি ক্লাস Dogএবং Catউভয় Animalপ্রোটোকল অনুসারে বিবেচনা করুন (সুইফ্ট প্রোগ্রামিং ভাষার ক্ষেত্রে। এটি জাভা / সি # তে ইন্টারফেস হবে)।
আমাদের কাছে একটি স্ক্রিন রয়েছে যা কুকুর এবং বিড়ালের মিশ্রিত তালিকা প্রদর্শন করে। এমন Interactorক্লাস রয়েছে যা পর্দার আড়ালে যুক্তি পরিচালনা করে।
এখন আমরা যখন কোনও বিড়াল মুছতে চাইছি তখন আমরা তার কাছে একটি নিশ্চিতকরণ সতর্কতা উপস্থাপন করতে চাই। তবে কোনও সতর্কতা ছাড়াই কুকুরকে তাত্ক্ষণিকভাবে মুছে ফেলা দরকার। শর্তসাপেক্ষ সহ পদ্ধতিটি দেখতে এরকম হবে:
func tryToDeleteModel(model: Animal) {
if let model = model as? Cat {
tellSceneToShowConfirmationAlert()
} else if let model = model as? Dog {
deleteModel(model: model)
}
}
এই কোডটি কীভাবে রিফ্যাক্টর করা যেতে পারে? এটা অবশ্যই গন্ধ
DogএবংCatএটি ক্লাস হিসাবে বর্ণিত হয়েছে, যখনAnimalএমন একটি প্রোটোকল যা এই ক্লাসগুলির প্রতিটি দ্বারা প্রয়োগ করা হয়। সুতরাং প্রশ্ন এবং আপনার উত্তরের মধ্যে কিছুটা অমিল আছে।