首页 > 代码库 > 观察者模式
观察者模式
观察者模式具有以下组件
(1) Subject 目标: 维护一系列的观察者,方便添加或者删除观察者
(2) Observer 观察者 : 为那些在目标状态发生改变时需获取得通知的对象提供一个接口
(3) ConcreteSubject 具体目标 : 状态发生改变时,向observer发出通知,储存ConcreteObserver的状态
(4) ConcreteObserver 具体观察者 : 存储一个指向ConcreteSubject的引用,实现Observer的更新
//----------- observer list var ObservertionList = function () { this.observerList = []; }; ObservertionList.prototype.add = function (value) { this.observerList.push(value); }; ObservertionList.prototype.Get = function (index) { //if(){ //do something return this.observerList[index]; //} }; ObservertionList.prototype.Count = function () { return this.observerList.length; }; var extend = function (obj, extension) { for (var key in obj) { extension[key] = obj[key]; } }; //----------(1) subject var Subject = function () { this.observers = new ObservertionList(); }; Subject.prototype.addObserver = function (obj) { this.observers.add(obj); }; Subject.prototype.notify = function (index) { //var len = this.observers.Count(); // for(var i=0;i<len;i++){ this.observers.Get(index).broadCast(); // } }; var observations = [ { Id: 1, name: "Jackey", age: 24, skill: function () { console.log("programming"); } }, { Id: 2, name: "Cassi", age: 23, skill: function () { console.log("cooking"); } } ]; //(2) observer var broadCast = function () { this.broadCast = function () { console.log("broadCast to other"); }; }; var subject = new Subject(); for (var i = 0; i < observations.length; i++) { extend(new broadCast(), observations[i]); subject.addObserver(observations[i]); subject.notify(i); } ;
观察者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。