2014-10-19 23 views
7

İkisinde de çalışıyorum ama gerçek bir fark bulamadım, bir şeyi özlüyorum mu? İnternette bazı insanlar Observer'ın Reaktör çok iken sadece bir olayı ele alması gerektiğini söylüyorlar - ama bunu gerçek bir fark olarak görmüyorum çünkü bir Reaktör tıpkı bir çok Gözlemci gibi görülebilir. Herhangi bir fark var mı, yoksa daha yeni bir isim var mı? Reactor, Observer'dan daha havalı mı?Gözlemci Deseni/Reaktör Örneği

sayesinde Carlo

+2

Birçok yönden, reaktifin gözlemci deseni için başka bir ad olduğunu kabul ediyorum – kenny

cevap

7

Reactor Pattern doğru işleyicisi istekleri ve gönderir demultiplekslemek bir aracı servis işleyici kullanır.

Observer Pattern, "Gözlemciler" konuyu kaydettirmeyi gerektirir; ardından, bir olay meydana geldiğinde tüm kayıtlı gözlemcilere bildirimleri gönderir.

Önemli fark şu ki, Reaktör Paterni merkezi bir istek işleyici ile gönderirken, Observer Pattern tüketicilerin doğrudan üreticiyle konuşmasına izin veriyor. Pratikte, Gözlemci Modeli, tüketicilerin dinamik olarak kaydedilmesi ve kayıt altına alınması konusunda daha fazla esneklik sağlayabilir. Çok yüksek eşzamanlılık uygulamalarında, aynı zamanda, çıktıyı darboğazlayan tek bir ara dağıtıcıya sahip olmamanın avantajını da sunar. Lapsed Listener Problem da, tüketiciler artık bildirilmek istemedikleri zaman konuyla ilgili kayıtları unutmayı unuttuğunda ortaya çıkmaktadır. Toplanan çöplerde, bu genellikle, GC'nin bu olay işleyicilerini toplamasını ve dolayısıyla bunları ve sahip oldukları tüm referansları sızmasını engeller. Bu, genellikle dinamik kaydı kullanmayan Reaktör Kalıbı ile mümkün değildir (teorik olarak da olsa).

+1

Reactor, ** sunucularına özgü bir soruyu çözüyor **: "sunucu uygulaması, gelen her isteği karşılık gelen servis sağlayıcısına demultiplex ve göndermelidir." Gözlemci, gözlemcilerinin konularını ayrıştırmak için daha genel bir modeldir. – Fuhrmanator