我在做DDD设计时遇到一个问题,请教板桥老师

11-02-28 ninyjun
一个问题需要请教板桥老师:

我在做DDD设计时遇到一个问题:

(在做一个model.service和repository的问题)

model 中业务类:

BillMgr(账单管理,从repository 获取账单,内部排序等 --内部方法比较多 )

AcctMgr(账户管理,从repository获取账户信息,等操作 --内部方法比较多 )

AcctBalanceMgr(账本管理,从repository获取账本,排序等操作--内部方法比较多 )

DiscntActionMgr(优惠活动管理,从repository获取已经参加的优惠,--内部方法比较多)

ParamMgr(通用参数管理,比较多的参数,--内部方法比较多)

...

现在有个model.TradeService 需要包含以上所有的类做一个业务

如:

TradeService.service1()

{

包含以上所有的类(BillMgr,AcctMgr,AcctBalanceMgr,DiscntActionMgr,ParamMgr...)

完成一个model.service

}

现在的问题是:

我是给TradeService 用一个 TradeRepository呢,还是给BillMgr,AcctMgr,AcctBalanceMgr,DiscntActionMgr

分别建立自己的Repository ?

例如:

TradeService(ITradeRepository rep); --BillMgr,AcctMgr等共用 ITradeRepository

还是

TradeService(IBillMgrRepository rep1,IAcctMgrReppsitory,rep2,...);--内部分别再传给BillMgr,AcctMgr 等

那种方法好些?

请指教,谢谢!

    

2
banq
2011-02-28 14:35
2011年02月28日 10:39 "ninyjun"的内容
我是给TradeService 用一个 TradeRepository呢,还是给BillMgr,AcctMgr,AcctBalanceMgr,DiscntActionMgr

分别建立自己的Repository ...

service一般在特殊情况下最好不用直接调用仓储,仓储是实体模型的仓储,仓储是和空间有关,时间无关的;服务是活动,和时间有关,与空间无关

ninyjun
2011-02-28 16:54
感谢老师回复!我说的那个SERVICE不是SERVICE LAYER层面的,而是domain.model层的,我的问题是用多个好,还是用一个好?

ninyjun
2011-02-28 16:58
如果用多个Repository,感觉每次构造TradeService的时候,比较麻烦,而且不好扩展;如果用一个感觉把BillMgr,AcctMgr,AcctBalanceMgr等就放到一个Repository中操作了,感觉不是很清爽!

ninyjun
2011-02-28 17:09
TradeService 是domain.model层的service,不是service layer层的。

方式1(共用一个):注入ITradeRepository,传给BillMgr,AcctMgr等其他类

TradeService(ITradeRepository rep);

BillMgr(rep),AcctMgr(rep)等共用 ITradeRepository

方式2(用多个):注入IBillMgrRepository ,IAcctMgrReppsitory等

TradeService(IBillMgrRepository rep1,IAcctMgrReppsitory,rep2,...);

内部分别再传给BillMgr(rep1),AcctMgr(rep2) 等

那种方式比较好些,请大家帮忙给点意见, 谢谢!

猜你喜欢
2Go 1 2 下一页