js如何沟通2个类?发布订阅模式、中介者模式

一、中介者模式
相当于new 了一个第三方的类,在游戏中常见。主程序负责调用其他精灵的类。并且可以随意操作每个类的每个属性,实现了通过一个类或多个类的值,操作另一个或另多个类的属性。

举个例子
游戏两精灵碰撞

Game.prototype.play=function(){
   var  子弹类 = new 子弹类()
   var  敌人类 = new 敌人类()
   var  分数类 = new 分数类()
}


Game.prototype.update=function(){ //  主程序轮询函数 Game类
     if(this.子弹类.x ===this.敌人类.x ){
          this.敌人类.死亡(); 
         this.分数类.加分(); 

}   
}

game类是中介。


二、发布订阅模式
 

function Teachter(){

     this.students=[];
}

Teachter.prototype.liuzuoye = function(txt){

     for (let i = 0; i < this.students.length; i++) {
         this.students[i].listen(txt)
  }

}

 

function Student(name,myteacher){

    this.name= name;
    this.teachter = myteacher;
    myteacher.students.push(this) // 关键宇语句

}

Student.prototype.listen=function(txt){

console.log("我是:"+ this.name+",我收到了老师留的作业:"+txt)

}

 

var laoshi = new Teachter();

var xiaohong = new Student("小红",laoshi);

var xiaoming = new Student("小明",laoshi);

 

laoshi.liuzuoye("背书!!")

 

每次创建student都会让老师类加入她的一个学生类。(订阅学生,一旦创建,立即加入)
每次老师留作业,都可以让她所有的学生开始执行学生的方法 (发布命令,执行对应的学生)

结果:
我是:小红,我收到了老师留的作业:背书!!
我是:小明,我收到了老师留的作业:背书!





 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值