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