搞了半天,我发现领域对象搞明白了,落地的时候最需要搞明白的应该是 Repository 的机制,所以又要返回来开发Repository。
Repository应该包含如下的元素和方法。
function Repository(){}
var repo = Repository.prototyep;
repo._repo = {} // 对象都放在这里,始终在内存中。
repo.find = function(){} // 查询方法
repo.findById = function(){}
repo.remove =
repo.removeById = ...
repo.create = function(entity,cb){} // 生成个新对象。
module.exports = Repository;
<p class="indent">
|
实际的仓储可以扩展它。例如
function InfoRepo (){}
util.inherits(InfoRepo,Repository) // 继承
var repo = InfoRepo.prototype;
repo.findByType = function(){
this.find() // 你的懂...
}
repo.findByTitle = function(){
this.find() // 你也懂的...
}
<p class="indent">
|
相信大家认为,对象都放在 this._repo 中,内存会很大,其实,这里的机制我说一下。
如果系统无任何访问,那么 这里的对象都是 {id:xxxx} 这种只有一个对象的皮,呵呵。如果那个对象被访问了,那么这里的那个对象将被填充,但对象不变,还是内存的那一块,因为皮没动。
定期的,Repository 会从很多到期未访问的对象中抽离出肉,只留下皮,就可以清理未用的内存。
[该贴被brighthas于2012-07-12 08:38修改过]