? ? ? }
? ? ? ? ? ? return this;
? ? ? ? }
? ? ? ? Publisher.prototype.removeOb=function(observer){
? ? ? ? ? ? var observers = this.observers;
? ? ? ? ? ? for (var i = 0; i < observers.length; i++) {
? ? ? ? ? ? ? ? if(observers[i]===observer){
? ? ? ? ? ? ? ? ? ? observers.splice(i,1);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? };
? ? ? ? ? ? return this;
? ? ? ? }
? ? ? ? Publisher.prototype.notice=function(){
? ? ? ? ? ? var observers = this.observers;
? ? ? ? ? ? for (var i = 0; i < observers.length; i++) {
? ? ? ? ? ? ? ? ? ? observers[i].update(this.getState()); //获取发布者的内容
? ? ? ? ? ? };
? ? ? ? }
? ? ? ? //订阅者
? ? ? ? function Subscribe(){
? ? ? ? ? ? this.update = function(data){
? ? ? ? ? ? ? ? ? console.log(data);
? ? ? ? ? ? };
? ? ? ? }
? ? ? ? //实际应用
? ? ? ? var oba = new Subscribe(),
? ? ? ? ? ? obb = new Subscribe();
? ? ? ? var pba = new Publisher();
? ? ? ? pba.addOb(oba);
? ? ? ? pba.addOb(obb);
? ? ? ? oba.update = function(state){
? ? ? ? ? ? console.log(state+"hello!");
? ? ? ? }
? ? ? ? obb.update = function(state){
? ? ? ? ? ? console.log(state+"world!");
? ? ? ? }
? ? ? ? pba.setState("open "); //发布者更新了内容
? ?