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 objecta'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 functiondizide 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 observersListbir Objectbenzeri 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, eventsyayınladığınıza bağlı olarak farklı işlevleri tetikleyebilirsiniz .