快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

ag真人百家家乐网站:对J2EE应用系统分层设计的思考



J2EE分层设计是Java企业利用的最基础的设计思惟。

从最老例的分层布局来说,系统层次从上到下依次为:

体现层:主如果客户真个展示。

办事层:直接为客户端供给的办事或功能。也是系统所能对外供给的功能。

领域层:系统内的领域活动。

DAO层:数据造访工具,经由过程领域实体工具来操作数据库。

此中有些指示原则:

1、上层老是依附其下层,依附关系不跨层。

2、体现成除外,同一层之间措施不容许互相调用。这是实际开拓中一些开拓者轻易范的差错!假如然是同一层之间存在措施调用,必要留意,这些调用都是一些上层弗成见措施,比如一些对象措施等。

3、统统从办事层启程,从系统必要供给的功能进行阐发,确定Service接口中的措施。ag真人百家家乐网站而不是从数据库的表启程,创建DAO,再创Domain,然后Service,这实际上是对系统分层的误解。

4、系统最核心的设计便是将系统中的实体划分为领域模型。在此根基上设计数据的DAO层,并将这些活动裸露给办事层,办事层的实现依附于领域活动。

5、每个接口的职责范围明确有界。

在我所做的系统中,经常看到一些糟糕的编码:系统设计从表开始,一个表对应一个DAO,一个DAO对应一个domain,一个Domain对应一个Service,实际上Service的接口和DAO的接口基础上完全一样!导致Service的接口措施超多!到了体现层,前台法度榜样员在写Action的时刻,Action中反复的调用Service措施,代码不堪入目。

精确的设计应该ag真人百家家乐网站是,一个领域活动会聚合对应一个或一组DAO,来完成一个领域活动。而一个办事可能包孕两个领域活动,比如一个转账的营业,对应两个领域活动。两个帐户的金额分手发生变更,必要操作一组领域活动,而每个活动必要操作很多表(调用多个DAO)。 事务的节制我们可以放到Service层。

今朝,越来越多的架构师爱好领域模型驱动设计,针对系统的领域模型建模,然后上层直接是Service,Service下面便是领域活动层Activity,从而去掉落了DAO层ag真人百家家乐网站,这样做的优点是系统设计思路更清晰,目标更明确。可以避免上面所说的一个表对应一个DAO、Service的环境。

但毛病是当领域活动发生变更的时刻,会引起领域活动层代码的变更。并且,当要替换持久化框架或者技巧时刻,领域活动要从新实现。

但综合斟酌起来,这样带来的优点也很多,而实际上替换数据库和持久化框架的环境很少,是以这样的设计也是ag真人百家家乐网站有其合理性一壁的。这样做实际上是将原本的DAO和Domain层合并为一个Activity.但上层的设计思路照样同等的。

着实ag真人百家家乐网站Service层的设计也很考究,此中便是要节制Service的数量,从Service层往下,接口数量逐层增添。平日将一个模块的办事都集中到一个Service中来处置惩罚。

每层中的每个接口都应该关注的是自己的那一块,而不是吃着碗里看着锅里,牛槽伸出个狗舌头,最范例的例子便是一个DAO中胡乱操作其余表。这种杂乱的实现只会置项目经理与逝世地。也会为软件的掩护带来很大年夜价值。

笔者曾碰到这样的团队,短缺对全部项目的整体设计,一个表一个DAO,对应一个Service,系统也不大年夜,三四十张表,然则机能相称地下,常常down机。

终极发明,掉败不是开源框架和数据库以及利用办事器和硬件设置设置设备摆设摆设的错,根源在于卑劣的设计导致。

盼望今后大年夜家在做项目的时刻能留意点。

原文出处:http://lavasoft.blog.51cto.com/62575/83974

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: