用CQRS的方式程式設計

brighthas發表於2012-07-17
這裡採用node.js的環境程式設計,採用CQRS方式程式設計。

首先建立“重新整理”Command

function ProductRefreshCommand(productId){
	this.productId  =  productId;
}
<p class="indent">


然後建立 Command handle. 是和Command一一對應的。

function ProductRefreshCommandHandle(command){
				this.command = command;
}

var handle = ProductRefreshCommandHandle.prototype;

handle.handle = function(){
	global.repos.productRepo.findById(this.command.productId,function(product){
		 product.refresh();								
	});
}
<p class="indent">


之後,我們建立Product.

function Product(id){
	this._num = 0;	
	this._id = id;
}

var product = Product.prototype;

product.__defineGetter__('num',function(){
	return this._num;						
});
product.__defineGetter__('id',function(){
	return this._id;						
});

product.refresh = function(){
	++this._num;
	global.eventbus.publish(new global.events.ProductRefreshEvent(this))	
}
<p class="indent">


然後,我們建立重新整理事件

function ProductRefreshEvent(product){
	this.product = product;	
}
<p class="indent">


最後,我們建立事件處理器

function ProductRefreshEventHandle(event){
	event.product.save();
}
<p class="indent">


先寫這些,有些沒有主題,希望各位一起探討。

相關文章