一、为什么要分层。
以前的我们,写代码的时候,都在main()方法中,出现了错误,就慢慢调试,这样浪费了我们很长的时间,而我们程序员的时间是非常宝贵的
但是当我们使用分层架构的时候,就可以清晰明确的知道错误出在哪里,或者在公司中,基本都是使用分层架构的,因为那样可以分离我们程序员的
关注,更为简洁。
二、分层带来了哪些好处。
其实带来了很多好处,首先,方便维护和分离关注点,就不谈了。
1.便于更改或替换。
先说说便于替换或者更新,我现在用的数据库是SQLServer数据库,如果我需要
将数据库更换为MySQL,如果增删改查的语法一致的情况下,我们只需要更改BaseDao工具类的连接字符串,而不用更改其它层的代码。
2.实现了软件之间的解耦。
就是每个部分独立变化。举个简单的例子,画一个三角形和画一个文字,在DX和OpenGL下面用的是截然不同的方法(不仅仅是函数名不一样)。
但是你哪一天你发现,你爱用DX还是OpenGL,丝毫不影响你如何画三角形还是文字,爱画什么画什么,那么你画的东西跟你画的手段就解耦了。
这个解耦的方法就是在中间插入一层interface。
孔子曰,软件的所有问题都可以通过增加一层interface来解决。你的团队越大,需求变化越快,你越要保证程序员之间的依赖关系越少,
你的软件解耦的就越好,interface就越多,关系就越复杂(跟乱不一样),应付变化就越容易,钱赚的就越多,越稳定。
3.做提高软件组件的重用
在软件开发中,由于不同的环境和功能要求,我们可以通过对以往成熟软件系统的局部修改和重组,保持整体稳定性,以适应新要求。
这样的软件称为可重(chong)用软件。
三、分层的架构和解析。
可大致分为:
DAO:该层分为接口和他的实现类来实现功能,dao子目录只提供对外接口,而他的实现类要放到数据访问层,就是impl层。
DTO:
Data Transfer Object 数据传输对象
主要用于远程调用等需要大量传输对象的地方。
比如我们一张表有 100 个字段,那么对应的 PO 就有 100 个属性。
但是我们界面上只要显示 10 个字段,
客户端用 WEB service 来获取数据,没有必要把整个 PO 对象传递到客户端,
这时我们就可以用只有这 10 个属性的 DTO 来传递结果到客户端,这样也不会暴露服务端表结构 .
到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为 VO
DAO和DTO的区别:
DAO :数据访问对象 —— 同时还有 DAO 模式
DTO :数据传输对象 —— 同时还有 DTO 模式
BIZ:业务逻辑层,跟dao层一样只提供共接口。
Model:实体层,用于读、取数据。
JavaBian: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 方法!。