求助!

11-05-17 achilleswar
IUserRepository userRepository = RepositoryFactory.CreateUserRepository();
User user = userRepository.GetUser(userId);
IFundRepository fundRepository=RepositoryFactory.CreateFundRepository();
Fund fund=fundRepository.GetFund(fundId);
IContext context = new RedeemContext(
     new SubscribeUser(user)
    ,new RedeemFund(fund)
);
ActionResponse response = context.Interact();
<p class="indent">

以上场景中只有一个fund作为【赎回基金】角色参与场景,假设现在有多个fund,貌似不怎么好处理,代码如下:

IUserRepository userRepository = RepositoryFactory.CreateUserRepository();
User user = userRepository.GetUser(userId);
IFundRepository fundRepository=RepositoryFactory.CreateFundRepository();
List<Fund> funds=new List<Fund>();
IContext context = new RedeemContext(
     new SubscribeUser(user)
    ,new RedeemFund(funds)
);
ActionResponse response = context.Interact();
<p class="indent">

因为对象要在场景内拉屎,而且要么一起拉屎(假设要赎回的基金都通过验证规则,则作持久化处理),要么一个都不能拉。。。
这句代码new RedeemFund(funds)就有点别扭了。请大家一起讨论。

[该贴被achilleswar于2011-05-17 09:52修改过]

banq
2011-05-17 11:10
2011年05月17日 09:48 "@achilleswar"的内容
对象要在场景内拉屎,而且要么一起拉屎(假设要赎回的基金都通过验证规则,则作持久化处理),要么一个都不能拉 ...


拉屎是要拉的,如果你觉得这些拉屎动作过于整齐原子化,那么就切割啊,通过引入事件或消息是一种办法。

achilleswar
2011-05-17 11:31
2011年05月17日 11:10 "@banq"的内容
切割 ...

不用切割,我思考了一下,单个PPT作为角色传入场景,多个PPT也能作为角色传入场景,那个地方改成数组或列表就可以了,照样符合DCI。。。

SpeedVan
2011-05-17 13:48
2011年05月17日 11:31 "@achilleswar"的内容
那个地方改成数组或列表就可以了,照样符合DCI。。。 ...


可以考虑可变数组参数方式

achilleswar
2011-05-17 14:12
2011年05月17日 13:48 "@SpeedVan"的内容
可以考虑可变数组参数方式 ...

同意,我现在的思路就类似这样,呵。

猜你喜欢