观察者模式: 又名通知者模式,对象A对已订阅的若干个对象(B, C, D)进行通知,(B, C, D)可以选择退订或再订阅;
例子(javascript): 老师D对已签到的学生进行通知报数
var D = {
students: [],
sign:function(student){
var i;
for(i in D.students){
if(D.students[i] == student) return;
}
D.students[D.students.length] = student;
},
unsign: function(student){
var i;
for(i in D.students){
if(D.students[i] == student){
D.students[i] = null;
return;
}
}
D.students[D.students.length] = student;
},
notify: function(){
var i, num = 1;
for(i in D.students){
D.students[i] && D.students[i].speak(num++);
}
}
};
var student = function(){};
student.prototype.speak = function(n){
alert(n);
};
var A = new student;
var B = new student;
var C = new student;
D.sign(A);
D.sign(B);
D.sign(C);
D.notify();