以前的人们写代码,都写在main()方法中,如果出现了错误,就慢慢调试,这样调试会浪费很多时间,而程序员的时间是非常宝贵的。但是当使用分层架构的时候,在系统出现错误的时候就可以清晰明确的知道错误出在哪里,现在的公司中百分百都是使用分层架构的,因为那样可以分离我们程序员的关注,使代码更为简洁。
分层架构的好处
分层架构其实带来了很多好处,首先就是方便维护和分离关注点,这一点前面已经提到了。
便于更改或替换
先说说便于替换或者更新,比如我现在用的数据库是SQL Server数据库,如果我需要将数据库更换为MySQL,在增删改查的语法一致的情况下,我们只需要更改BaseDao工具类的连接字符串,而不用更改其它层的代码。
实现软件之间的解耦
解耦之后,每个部分都可以独立变化。
举个简单的例子,画一个三角形和画一个文字,在DX和OpenGL下面用的是截然不同的方法(不仅仅是函数名不一样)。但是你哪一天你发现,你爱用DX还是OpenGL,丝毫不影响你如何画三角形还是文字,爱画什么画什么,那么你画的东西跟你画的手段就解耦了。这个解耦的具体做法就是在中间插入一层接口(interface)。软件的所有问题都可以通过增加一层interface来解决。你的团队越大,需求变化越快,你越要保证程序员之间的依赖关系越少,你的软件解耦的就越好,interface就越多,关系就越复杂(跟乱不一样),应付变化就越容易,钱赚的就越多,越稳定。
做提高软件组件的重用
在软件开发中,由于不同的环境和功能要求,我们可以通过对以往成熟软件系统的局部修改和重组,保持整体稳定性,以适应新要求。这样的软件称为可重用软件。
分层的架构和解析
代码分层可大致分为:
DAO(数据访问对象):该层分为接口和他的实现类来实现功能,dao子目录只提供对外接口,而他的实现类要放到数据访问层,就是impl层。
DTO(Data Transfer Object,数据传输对象):主要用于远程调用等需要大量传输对象的地方。 比如我们一张表有100个字段,那么对应的PO就有100个属性。 但是我们界面上只要显示10个字段, 客户端用WEB Service来获取数据,没有必要把整个PO对象传递到客户端, 这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。
BIZ(业务逻辑层):跟dao层一样只提供接口。
Model(实体层):用于读、取数据。
JavaBean:javaBean在MVC设计模型中是model,又称模型层,在一般的程序中,我们称它为数据层,就是用来设置数据的属性和一些行为,然后我会提供获取属性和设置属性的get/set方法。
Servlet:用于跟JSP页面进行交互。
POJO(Plain Ordinary Java Object,简单无规则的Java对象):传统意义的Java对象。就是说,在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的Persisent Object完全是一个符合Java Bean规范的Java对象,没有增加别的属性和方法。我的理解就是最基本的Java Bean,只有属性字段及setter和getter方法。
"你的气质里,藏着你走过的路,读过的书和爱过的人。"