一天一个设计模式(3):观察者模式

观察者模式: 又名通知者模式,对象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();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值