Dieser Artikel vergleicht die Publish-Subscribe- und Observer-Muster, zwei entkoppelte Kommunikationsmechanismen. Bei Publish-Subscribe handelt es sich um Rundfunkveranstalter, die Nachrichten an anonyme Abonnenten senden, während beim Beobachter ein zentraler Beobachter zum Benachrichtigen des Registers eingesetzt wird. Hauptunterschiede zwischen Publish-Subscribe- und Observer-Mustern. Publish-Subscribe ist ein entkoppelter Kommunikationsmechanismus, an den Herausgeber Nachrichten senden mehrere Abonnenten, ohne deren Identität oder Nummer zu kennen. Abonnenten registrieren sich, um Nachrichten zu Themen oder Ereignissen zu erhalten, und werden benachrichtigt, wenn eine passende Nachricht veröffentlicht wird.
Observer ist ebenfalls ein entkoppelter Kommunikationsmechanismus, aber es handelt sich dabei um einen zentralen Beobachter, der eine Liste von Beobachtern (auch Subjekte genannt) führt ). Wenn sich das beobachtete Objekt (Subjekt) ändert, benachrichtigt es alle Beobachter und übergibt einen Verweis auf sich selbst. Beobachter aktualisieren sich dann selbst basierend auf dem Stand des Themas.
Die Wahl zwischen Publish-Subscribe- und Observer-Mustern hängt von den spezifischen Anwendungsanforderungen ab:
Publish-Subscribe: Geeignet, wenn es mehrere gibt Produzenten senden Nachrichten an potenziell viele Konsumenten, und Sender und Empfänger müssen nicht direkt interagieren.
Skalierbarkeit, da neue Abonnenten ohne hinzugefügt werden können Auswirkungen auf den Herausgeber.
Flexibilität, mit themenbasiertem Routing, das eine gezielte Nachrichtenzustellung ermöglicht.Nachteile:
Beobachter
Geringerer Overhead, da Nachrichten erst gesendet werden, wenn sich der Status des beobachteten Objekts ändert.
Ermöglicht Verbrauchern dies Beobachten Sie den Zustand des Produzenten direkt.Nachteile:
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Publish-Subscribe-Muster und Beobachtermuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
if($res){
return json_encode(array('code'=>1,'msg'=>'成功'));
}else{
return json_encode(array('code'=>0,'msg'=>'失败'));
}
}
public function
}