DELEGATION’A GİRİŞ – imedre.com
Peki, delegate nedir?
“Delegate, belirli bir olay olduğunda bir nesnenin başka bir nesneye haber göndermesine olanak tanıyan bir Design Pattern’dır.”
Bir A nesnesini hayal edin. Bir eylemi gerçekleştirmek için B nesnesini çağırır. Eylem tamamlandığında, A nesnesi B’nin görevi tamamladığını ve gerekli eylemi gerçekleştirdiğini bilmelidir. Bu işlem delegate’lerin yardımıyla gerçekleştirilebilir!
Sizlere bu olayı bir örnekle açıklayayım :
2 yaşınızda olduğunuzu hayal edin. Yemek yemeyi bu yaşta bilemezsiniz, bu yüzden annenizin yardımına ihtiyacınız vardır.
Yemek yapabilen bir anne oluşturmadan önce, annenin nasıl yemek pişirileceğini bilmesi gerekiyor.
Şimdi, “YemekPisirme” protokolüne uyan bir anne yapısı oluşturalım:
Şimdi ise gerçek bir anne nesnesi oluşturalım:
Şimdi, 2 yaşında bir bebek oluşturma vakti. Ama onun birisinin yardımına ihtiyacı var, bu yüzden onun yerine yemek pişirebilecek bir yetişkin delegate) ekleyeceğiz.
Şimdi, gerçek bir bebek nesnesi oluşturalım ve delegate’i anne olarak atayalım.
Temsilci(delegate) özelliğinin türü “YemekPisirme” dir. “Anne” tipi “YemekPisirme” protokolüne uygun olduğundan hem “YemekPisirme” hem de “Anne” olabilir.
Şimdi, bebeğimiz yemeğini yiyebilir:
Bebek yemek yapmayı bilmiyor. Ancak, kendisi için yemek yapabilecek isteğe bağlı olarak bir delegate ekledi. Daha sonra bu delegate’i, kendisinden daha çok şey yapabilen anne nesnesi olarak atadı.
Basit mi? Evet öyle. Bu kavramı açıklayan birçok blog okudum ve bunların çoğu çok karmaşık anlatıyordu. İyi bir makale yazdığımı düşünüyorsanız bunu yorumlar bölümünde belirtebilirsiniz. Umarım bu yazımı paylaşmaya değer bulmuşsunuzdur.
Örnek dosyayı https://github.com/erdemozgur/delegation adresinden indirebilirsiniz.
Delegation Design Patterns iOS Swift Xcode