本来我想做DDD-NODE框架,但是发现不太可能,所以我分理出了能够简化开发的东西。
Repository 中能做的就是事件机制和一些约定规范。
Entity 能做的也是事件机制和一些约定规范。
Repository用node.js 开发完成了,下面给出代码,具体代码略。
function Repository(){}
var repo = Repository.prototype;
repo.on = function(id,event,listener){}
repo.once = function(id,event,listener){}
repo.emit = function(id,event){}
repo.removeListener = function(id,event,listener){}
repo.removeAllListener = function(id,event,listener){}
module.exports = Repository
<p class="indent">
|
下面是Entity代码
function Entity(){
this._repo = ... ; // Repository 实体对象
}
var e = Entity.prototype;
e.on = function(event,listener){
this._repo.on(this.id,event,listener); // 内部调用仓储的监听,一下略
}
e.once = function(event,listener){
// ... 略
}
e.emit = function(event){
// ... 略
}
e.removeListener = function(event,listener){
// ... 略
}
e.removeAllListener = function(event,listener){
// ... 略
}
<p class="indent">
|
使用方法如下:
比如我们需要监听一下 Info 的被更改的事件。
var id = ...
// 第一种方法
infoRepo.on(id,'change',function(info){})
// 第二种方法,我们得到info的情况下
info.on('change',function(info){})
<p class="indent">
|
如果要监听全部的info中,只要有info改变就激发事件,那么只有一种方式。
infoRepo.on("*","change",function(info){})
<p class="indent">
|
而Repository内存优化和具体的实现这个就只能交给程序员了,当然也许不是这样,我再想一想。
[该贴被brighthas于2012-07-14 09:26修改过]