Buradaki tüm cevapların Gözlemci ve Pub / Sub örüntüleri arasındaki ince farkı somut örnekler vermeden açıklamaya çalıştığı konusunda biraz eğlendim. Bahse girerim ki okuyucuların çoğu hala birini eşzamanlı ve diğeri eşzamansız okuyarak her birinin nasıl uygulanacağını bilmiyorlar.
Unutulmaması gereken bir nokta: Bu kalıpların amacı kodu ayırmaya çalışmak
Gözlemci, bir nesnenin (özne olarak bilinir) ona bağlı olarak nesnelerin bir listesini (gözlemciler) tuttuğu ve durumdaki değişiklikleri otomatik olarak bildirdiği bir tasarım modelidir.
Gözlemci modeli
Bu, observable object
a'nın tüm listesini koruduğu bir listeye sahip olduğu anlamına gelir .observers
(genellikle işlevler olan) . ve bu listede gezinebilir ve iyi hissettirdiğinde bu işlevleri çağırabilir.
bkz bu gözlemci desen detaylar için Örnek.
Bir nesnedeki herhangi bir veri değişikliğini dinlemek ve diğer UI görünümlerini buna göre güncellemek istediğinizde bu model iyidir.
Ancak Eksileri Gözlemlenebilir, gözlemcileri tutmak için sadece bir dizi korur
(örnekte, diziobserversList
).
Bu notify function
dizide depolanan tüm işlevleri tetikleyen yalnızca bir tane olduğundan güncellemenin nasıl tetiklendiğini ayırt ETMEZ .
Gözlemcilerin işleyicilerini farklı olaylara göre gruplandırmak istiyorsak. Bunu sadece observersList
bir Object
benzeri gibi değiştirmemiz gerekiyor
var events = {
"event1": [handler1, handler2],
"event2": [handler3]
}
bkz bu PubSub örneği detaylar için.
ve insanlar bu varyasyonu olarak adlandırıyorlar pub/sub
. Böylece, events
yayınladığınıza bağlı olarak farklı işlevleri tetikleyebilirsiniz .