oobbs开发过程纪实

九星天辰诀wwhhgxs傲世九重天wwzeizanoobbs开发过程纪实1.关于Action中populate数据的问题:Action的一个职责就是:创建领域对象的实例,并将从页面传来的数据populate到实例中。这个过程有一个问题:即,如果建新的对象需要的是另一个领域对象,这时候,页面传递过来的只是这个对象的id,那么这个propoerty将如何set呢?比如在新建一个Thread的action中,要为新的thread设置forum,而页面传来的只是forum的id,那么,是在action中load这个forum,并set给thread还是在service中呢?解决方案:使用DTO会解决这一系列的问题!同时使领域层具有更好的自封装性。也不再需要opensessioninview!DTO只是数据的载体,这与展现层的基本需求(只是读写数据而不做业务处理)的特点是相适应的。当DTO到达service后,再拆解数据,做一系列的业务操作是很好的。引入DTO的好处在于:可以把领域对象封装在领域模型内部。本质上讲,视图层需要的仅仅是从领域层得来的数据,当然它自己也有逻辑,不过这些都是展示逻辑,与业务无关,所以说,我应该只传送数据就好。另外,如果使用领域对象做为数据载体在领域层和展现层之间进行传递,会有一些问题:如果领域九星天辰诀wwhhgxs傲世九重天wwzeizan对象的创建较为复杂,那么在Action里创建领域对象会变得很不方便,因为毕竟不是在领域模型里,简单例子是,如果我们需要的对象A是通过对象B的工厂方法创建的,那么这个在Action里写出来就会很怪异。另外,DTO并不是与领域对象一一对应的,它是粗粒度的,面向视图层的。这也是引入DTO的一个目的。2.在应用层关于service和data的设置意图。显然,在应用层,不存在面向对象那种数据和行为的封装,因此,service承担了“行为”,data承载的“数据”。在应用层内部,我们会创建领域对象,并把data的值populate到领域对象里,然后再通过领域对象的业务方法执行业务操作。这一模式是非常合理而有效的。3.关于DTOAssembler装配DTO的问题:一般来说,从领域对象抽取数据装配DTO没有问题,因为领域对象包含全部可能的数据,装配DTO时只是一个选取的过程。但是反过来可能会存在问题。比如:保存一个Thread需要设置它所属的Forum。从页面传递过来的Threa九星天辰诀wwhhgxs傲世九重天wwzeizandDTO中除了Thread的基本信息外,还提供了一个ForumId.对于Assembler来说,如果想要组装一个Thread领域对象,需要通过ForumId加载出一个Forum实例来(注:在hibernate里,要通过session.load方法加载一个代理,这样才不会有效率问题),但这需要repository的协助。4.关于是否需要引入ServiceFacade的思考目前工程已经引入了DTO。按照标准的j2ee模式,DTO总是配合ServiceFacade一起使用使用的(4月27日做出的修正:DTO并不只是配合ServiceFacade使用的,基本上我们需要引入DTO,那么ApplicationService也必将使用DTO。并不是说DTO只能出现在Facade的接口里。这一点在PoEAA和CoreJ2EEPatterns两本中的代码中都有所体现)。对于是否引入这一组件我的思考是:传统意义上来看,DTO是面向Client(或者说是展现层)的数据结构,ServiceFacade是面向Client的UserAction,或者说是面向UseCase的。DTO和ServiceFacade联合起来构成一个Client(或者说是展现层)和业务层(领域模型)之间的适配器。典型的情况是:如果一个UserAction需要多个Service共同工作才能写成时,ServiceFacade的作用就突显出来了。它九星天辰诀wwhhgxs傲世九重天wwzeizan本身并没有业务逻辑,但是它会将Action的请求委派给合适的Service进行处理。这个理念看上去很合理但是实际运用起来并不容易。首先这里有一个Facade和Service的粒度问题。如果说一个Facade的方法对应一种Action,那什么样的UserAction会需要委派给多个Service呢?具体又应该是几个呢?Service的粒度标准又是什么呢?有人说Service是面向业务的(在TransactionScript类型的工程里尤其如此),我看确切的说它的内部是业务处理,它的那些方法究竟是面向什么(或者说是以什么为依据)而梳理成一个方法的呢?我想这个标准并不好找,我们只有一个最上面的一致标准:用户请求,也就是Facade的粒度标准。问题就在...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?