做一个DEMO来看分层渐变

       最近做了一个DEMO(大家都比较熟悉的登录实例),利用这个DEMO来做了个分层渐变的演示。每一步前进一点,逐步解耦。下面整体描述一下这个DEMO的分层渐变。

 

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的职责更加单一,即只显示数据。


总结

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

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



  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值