现在的位置: 首页 > 综合 > 正文

DRP分层渐变 (精)

2013年09月10日 ⁄ 综合 ⁄ 共 2379字 ⁄ 字号 评论关闭

 

DRP视频看完了,在学习的过程中对分层又有了新的认识,并且老师对分层是一种循序渐进的讲解方式。每一步前进一点,逐步解耦。下面整体上回忆一下在DRP中的分层渐变。

Model1

-----------------------------------------------

       这个版本的分层是直接用JSP调用业务逻辑层,完成业务处理和数据库操作。耦合性非常高,修改和维护是一件非常困难的事情,适合于快速开发,容易理解,编码简单。


Model1+Dao设计模式

-----------------------------------------------

        这一个分层主要是在Model1的基础上又用了一个Dao设计模式,通过Dao层把数据库操作封装起来,进一步降低了业务逻辑层的耦合性。其实这就是三层架构。适合团队开发分工划分,这样分层让每一层的职责划分更加明确,虽然这样分层在一定程度上降低了耦合度,但是我们可以知道上层是知道下一层的实现的,从这样个角度来说耦合度在一定程度上还是比较高的。


Model2

-----------------------------------------------

       这样分层就是Java中的Model2。主要在上一版本的基础上添加了一层控制,主要是由Servlet来负责。添加了这层控制层之后让JSP的职责更加单一,只负责显示数据,一些业务控制拿到了控制层。这样让职责更加明确。但是JSP中依旧会出现Java代码,所以这样就要求做界面的开发者要了解Java代码。

Model2+简单工厂

-----------------------------------------------

       这个分层首先是在DAO层抽象了一个DAO的接口,并且在业务逻辑层和DAO层添加了一个简单工厂。

       简单工厂的作用就是隐藏DAO实现的细节,让业务逻辑层直接触的是接口,具体实现看不见。这样就能把业务逻辑层和DAO层解耦,可以应对数据库更换的变化。这样一分层会让程序的复杂度加大。

       还有一点就是如果现在更改数据库之后,工厂中实例化的代码是需要更改的,所以这样分层的耦合性依旧是比较高。

-----------------------------------------------


---------------------此类图进一步加深简单工厂理解--------------------------

Model2+工厂方法

-----------------------------------------------


        这一个分层的好处依旧是降低业务逻辑层和DAO层的耦合性,依旧和简单工厂一样隐藏了产品的创建细节,并且原先的简单工厂的分层是在工厂中有必要的逻辑判断,简单工厂根据业务逻辑层选择条件动态实例化相关的类,而工厂方法是把工厂中的逻辑判断移动到了业务逻辑层中,这样工厂不再进行判断,逻辑业务层根据业务来选择工厂进行类的实例化。

       这样如果更换数据库,我们原先是更改工厂,现在变成更改业务逻辑层了。

       这样分层让程序的复杂性进一步加大,让类变得更加多。

-----------------------------------------------


---------------------此类图进一步加深工厂方法理解--------------------------

Model2+单层抽象工厂

-----------------------------------------------


        这一分层是用抽象工厂来进行解耦的,主要是在业务逻辑层和DAO层中添加了一层抽象工厂,抽象工厂可以完成多产品系列的创建。使用抽象工厂我们发现业务逻辑层通过抽象接口操作示例的,具体的产品类名是不会在出现的,这样耦合性就降低了,如果用上反射和配置文件的话,假如更改数据库的话只需更改一下配置文件即可完成数据库更改。

 

-----------------------------------------------


---------------------此类图进一步加深工厂方法理解--------------------------

Model2+双层抽象工厂

-----------------------------------------------

        受到上一层的影响,在控制层和业务逻辑层中也加了一层抽象工厂,用处同上。耦合度进一步降低。

        *但是这样依赖抽象工厂会实例化很多类,调用一次实例化一次。可以在服务器端在加入一层抽象的Servlet层(在这里就不画图了),这一层主要就是实例化抽象工厂的,当服务器已启动就实例化工厂类。这样就避免了多次实例化工厂类。*

Model2+JSTL+双层抽象工厂

-----------------------------------------------

        这一层主要是在界面上作了改变,主要就是用到了JSTL技术,这种技术主要让界面的JSP中不再出现Java代码,用了JSTL技术JSP编程了纯标签的,这一变化就让JSP的职责更加单一,即只显示数据。

总结

-----------------------------------------------

        通过这个DRP的分层演变,对分层有了进一步认识,其实学习这个分层演变主要还是学会在什么场合用什么样的分层架构。在这个演变中首先学会几种分层,在以后的实战型目中认真分析需求选择合理的分层架构才是王道。

 

转自:http://blog.csdn.net/lfsf802/article/details/7235284  mvc分成结构演变

【上篇】
【下篇】

抱歉!评论已关闭.