[egret+pomelo]实时对战游戏杂记(5)

之前大体了解了pomelo服务端的运行的大体运行流程,下面详细的学习一下在服务端比较重要的一个容器模块bearcat,在bearcat的wiki中我们可以对其有个大概的了解,在服务端示例的代码中也大量的出现了对bearcat模块的使用。

如playerHandler.js中:

module.exports = function (app) {
  //设置bearcat bean
  return bearcat.getBean({
    id: "playerHandler",//唯一Id
    func: PlayerHandler,//所对应的对象
    //参数 相当于调用  var PlayerHandler= function(app){}
    args: [{
      name: "app",
      value: app
    }],
    //依赖注入
    props: [{
      //对象名称
      name: "areaService",
      //引用文件
      ref: "areaService"
    }, {
      name: "dataApiUtil",
      ref: "dataApiUtil"
    }, {
      name: "consts",
      ref: "consts"
    }]
  });
};

总结起来,bearcat有很多功能,在使用上最方便的就是其作为容器,可以在预加载的时候,将代码中的所有模块进行封装,让我们可以根据模块的id,轻松的对模块功能进行调用,不用再去想模块文件的位置来做“require(xxx)”或实例化操作

其中getBean({xxx});方法的参数中,也有些配置需要我们注意的地方。

比如:

1.对象的单例、实例化模式

scope : scope 可以是 singleton 或者是 prototype, 默认情况下是 singleton

2.抽象

abstract : 用于定义一个bean是抽象的, 即不会实例化, 默认情况下是 false

3.继承

parent : 用于定义bean之间的继承关系, 类似于对象之间的继承关系, 子类会继承父类 prototype 里面所没有的method, 值为parent bean id

4.初始化及销毁

init : 在构造函数被调用之后执行的init方法, init 方法可以是async异步的
destroy : 析构函数, 当容器优雅的关闭的时候, destroy 方法会被调用, 来做一些销毁工作
posted @ 2018-01-03 10:09  枫之戊  阅读(699)  评论(0编辑  收藏  举报