观察者模式和发布订阅模式有一定的相似性,区别也很明显。
观察者模式:存在一个被观察者和多个观察者,被观察者订阅观察者的消息提醒服务,当有新的消息,被观察者就会提醒每一个观察者,从而做出改变。观察者和被观察者之间有耦合关系。
发布订阅模式:存在多个发布者和订阅者,订阅者可以订阅一个或者多个发布者,一个发布者也可以被一个或者多个订阅者订阅,是一种多对多的关系。此外,发布订阅双方需要一个第三者来对消息进行管理,称作消息队列Broker。发布者只需告诉Broker,我要发的消息,topic是AAA;订阅者只需告诉Broker,我要订阅topic是AAA的消息;于是,当Broker收到发布者发过来消息,并且topic是AAA时,就会把消息推送给订阅了topic是AAA的订阅者。当然也有可能是订阅者自己过来拉取,看具体实现。发布者和订阅者通过Broker实现了解耦。
装饰者模式:能够给对象动态地增加职责的方式称为装饰者模式。装饰者模式能够在不改变对象自身的基础上,在程序运行期间给对象动态地添加职责。装饰者对象持有原对象的引用,并在原对象的基础上添加了额外的属性。是对原对象的一种包装。
三种模式的javascript实现。。。待续。