दो वर्गों 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एक प्रोटोकॉल है कि उन वर्गों में से प्रत्येक के द्वारा लागू किया गया है। तो सवाल और आपके जवाब के बीच एक बेमेल संबंध है।