Bu eski bir yazı ama yine de zil sesine gireceğim çünkü diğer cevaplar her iki kalıbı kullanırken ne olduğu ile ilgilenmiyor, teoriden pratikten daha fazla gibi görünüyorlar.
Delegasyon ve Gözlemci Nasıl Çalışır?
Delegasyon ile temsilci, potansiyel etkinliğin kaynağı oluşturulduğu anda belirli bir etkinliğe kimin yanıt vereceğini tam olarak seçer. Bu dinleyiciyi tek bir gözlemci olarak düşünebilirsiniz . Gözlemci modeli söz konusu olduğunda gözlemci, ne zaman hissettiğini gözlemlediğini seçer; gözlemci delegasyonuna gelince bağımlılıklar tersine çevrilir. Gözlemci modeli ile bir gazeteyi ve aboneleri gözlemci olarak düşünün. Gözlemciler, ilişkinin ne zaman yaratıldığını kontrol eder. Heyet ile bir çalışanı ve bir işvereni düşünün. İşveren, ilişkinin ne zaman oluşturulacağını ve tam olarak belirli olaylardan kimin sorumlu olduğunu kontrol eder. Çalışanlar hangi görevler üzerinde çalıştıklarını seçemezler.
Bazı delegasyonun bir gözlemci olabileceğini savunuyor ama bence ikisi arasındaki gerçek fark olay yönetiminin nasıl atandığı. Bir etkinlik için asla temsilci kaydı görmeyeceksiniz. Olayın gerçekleşmesine kadar olayı bile yönettiğini asla bilemez ve delege etkin bir genel yöntem çağırır.
Delegasyon Avantajı
Bu desen çok katıdır ve en düzenli tasarımlarla daha basit ve genellikle daha sağlamdır. Potansiyel olayın kaynağını ilk başlattığınızda sizi olay işleyicinizi önceden bildirmeye zorlar. Trafiği yönlendirecek birine ihtiyacınız varsa, caddeyi açmadan önce bir trafik direktörü atarsınız. Gözlemci durumunda, trafik polisinin trafiği ne zaman istediği zaman yönlendireceğini seçmesine izin verirsiniz.
Delegasyon Dezavantajı
Bu tasarımın dezavantajı esnek olmamasıdır. Bir gazeteye abone olmak için bazı kodlar uyguluyorsanız, gazete / delege hazırlayan kişinin haber hikayelerini kimlerin okuduklarını tam olarak okuyabileceklerini tam olarak tanımlaması gerekir. Gözlemci modeli ile daha sonra herhangi bir zamanda kaydedilebilirler ve gazete sadece yeni bir kişinin kaydolduğunu bilmek zorundadır.
Delegasyon Ne Zaman Seçilmeli?
Kesin olarak belirli bir gözlemciye / gözlemcilere ihtiyacınız olduğunda ve kimin gözlemlediğini değiştirmenizin bir nedeni yoksa, delegasyon modelinin katı tasarımı faydalı olacaktır.
Örneğin, belirli bir hata için bir pop-up oluşturma işlemiyle başa çıkmak için bir sınıfa / nesneye ihtiyacınız vardır. Çalışma zamanında kimin belirli bir hatayı işlediğini değiştirmenizin pek çok nedeni yoktur, bu nedenle "Bellek Dışı" hatasını tek bir varlığa devretmek mantıklı olacaktır. Bir dizi potansiyel işleyici oluşturmak ve daha sonra bu işleyicilerin "Bellek Dışı" hatası için kaydolmasını sağlamak pek mantıklı olmaz; bu durum gözlemci modelinin kullanılmasına bir örnek olacaktır. Çalışma zamanında değişken yöntemler için hangi yöntemlerin çağrıldığını veya "temsilci" nin çağrıldığını değiştirmek isteyebilirsiniz, ancak çalışma zamanında belirli bir olay için bir olay işleyicisini değiştirmek normal değildir.
Delegeleri gözlemci düzeninde yaptığınız gibi değiştirmek imkansız değil, sadece karmaşık. Gerçek dünyada belki de yeni bir temsilci trafiği idare etmek için trafik polislerini değiştirmek istersiniz. Daha iyi bir tasarımın orijinal delegeyi tek bir polis memuru değil, bir polis karakolu haline getireceği iddia edilebilir, ancak ben ...