CQRS pattern
これは何か
Command and Query Responsibility Segregationの略で、Command(変更処理)とQuery(検索・参照処理)を分けることを指すとある
具体的には?
更新と参照のデータ格納クラス処理を分ける。
その上で、以下の様なCommandパターンを利用して処理を分けることが一例として挙げられる
public class ProductsCommandHandler :
ICommandHandler<AddNewProduct>,
ICommandHandler<RateProduct>,
ICommandHandler<AddToInventory>,
ICommandHandler<ConfirmItemShipped>,
ICommandHandler<UpdateStockFromInventoryRecount>
{
private readonly IRepository<Product> repository;
public ProductsCommandHandler (IRepository<Product> repository)
{
this.repository = repository;
}
void Handle (AddNewProduct command)
{
...
}
void Handle (RateProduct command)
{
var product = repository.Find(command.ProductId);
if (product != null)
{
product.RateProduct(command.UserId, command.Rating);
repository.Save(product);
}
}
void Handle (AddToInventory command)
{
...
}
void Handle (ConfirmItemsShipped command)
{
...
}
void Handle (UpdateStockFromInventoryRecount command)
{
...
}
}
この記事が気に入ったらサポートをしてみませんか?