采用DDD开发信息发布系统(五)不是想象的那样

12-07-14 brighthas

本来我想做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>

下面是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>

使用方法如下:

比如我们需要监听一下 Info 的被更改的事件。

var id = ...
// 第一种方法
infoRepo.on(id,'change',function(info){})
// 第二种方法,我们得到info的情况下
info.on('change',function(info){})

<p>

如果要监听全部的info中,只要有info改变就激发事件,那么只有一种方式。

infoRepo.on("*","change",function(info){})
<p>

而Repository内存优化和具体的实现这个就只能交给程序员了,当然也许不是这样,我再想一想。

[该贴被brighthas于2012-07-14 09:26修改过]

    

猜你喜欢