这一年很忙,很久没有发帖了。我看了jdonframework6.5中DCI的设计方式,感觉有一些别扭的地方,希望与bang一起探讨。
目前jf6.5中的DCI使用模式如下:
@[author]Model[/author] public class User[author]Model[/author] {
private String userId; private String name; <strong>@Inject public ComputerRole computerRole;</strong> ...
|
以上模式让我感觉有些奇怪,因为一个对象是会有很多角色的。在复杂的业务场景中,这样会使对象中的角色变得臃肿不堪。从对DCI的本身来看,我认为应该是场景赋予对象以角色,那么这样在场景还没出现的情况下就让对象拥有角色的做法也是不适当的。
@[author]Model[/author] public class ComputeContext {
private DomainMessage ageAsyncResult;
public void preloadData(User[author]Model[/author] user) { if (ageAsyncResult == null) <strong>ageAsyncResult = user.computerRole.computeCount(user)</strong>; }
|
以上user.computerRole.computeCount(user)的写法在我看来也是有问题的。既然场景赋予对象以角色,那么正确的写法应该是
ageAsyncResult = computerRole(user).computeCount();
|
建议JF在computerRole(user)中可以自动实现注入,就不需要写类似@Inject public ComputerRole computerRole的代码了。
以上是我对JF中的DCI提出的一些建议,希望大家一起讨论。
[该贴被flyzb于2012-03-11 12:48修改过]