WEB-开发模式-12-经典三层架构

一、javaee设计模式的发展
Servlet


JSP


JSP + JavaBean


Servlet + JavaBean + Jsp -- 符合mvc


javaee的经典三层架构 -- 符合mvc



一、MVC设计模式
软件可以人为有 Model View Controller 来组成 MVC设计模式 要求这三部分 应该尽量独立 互不干扰 使程序结构清晰  便于开发和维护


二、JAVAEE经典三层架构
将整个JAVAEE的开发过程分为 Web Service Dao 三层


案例:改造EasyMall 为 三层架构


分层的优势:


~1.分层目的在于 代码具有更加优良的结构 便于开发和调试
~2.便于在层与层之间实现代码的复用 减少代码冗余
~3.在更改模块时可以不影响其他模块的使用 实现模块的复用 
如 需要将底层的数据库 从mysql 切换到oracle 此时 只需要去修改Dao层 web层和service层不需要修改。
再例如 ,需要将web层 切换为 用Android 或 IOS 移动端实现 ,此时 只需要 替换web 层 Service 和 Dao层不需要修改。




为了实现第三个优点,三层架构要求,层与层之间尽量的独立,不要胡乱传递层特有的对象,例如不要将web层特有的对象传递给其他层,dao层 特有的对象返回给其他层,因为,一旦这样做,这些某一层特有的对象就入侵到了其他层,一旦需要替换这一层时,不可避免的要跟着修改其他层中使用了这一层特有对象的地方的代码。这种由于乱传递对象而造成 层与层之间关系变得过于紧密的情况,称之为层与层之间发生了耦合。
这种层与层之间过于紧密的关系是有害的,应该尽量的避免或消除,解决这些耦合的过程就称之为 解耦。最终希望实现 高内聚 低耦合 的状态。


解耦的实现:
不要胡乱传递层特有的对象人为的造成耦合。
但是再小心,层与层之间早晚要发生关系的,这些耦合是无法避免的,此时 需要将耦合管理起来 - 管理耦合有很多种方案 - 我们介绍 - 接口+配置文件+工厂 实现解耦。


案例:开发 工厂 实现 EasyMall层与层之间的解耦


基于 单例 泛型 反射 等机制。。参考代码





**********************************************************\



1. 开发模式

1.1. Javaee开发模式

1.1.1. 遇到的问题

回顾我们目前写的EasyMall代码,我们发现一个非常简单的功能都需要非常多的代码,代码混杂在一起,造成Servlet中代码庞杂不易维护。可以想象,如果想要用这种开发方式开发一个完整的web应用,一定是十分困难的。如图-26所示:

 

-26

1.1.2. 开发模式的发展

既然这种开发模式已经进行不下去了,那么应该如何组织整个工程的架构呢?在整个web开发发展的历史中,产生了多种开发模式。如图-27所示:

 

-27

现在的javaweb应用基本都使用的是javaee的经典三层架构。

我们就使用这种架构改造EasyMall项目。

2. JAVAEE经典三层架构改造EasyMall

2.1. 改造EasyMall

2.1.1. 分包

我们重构EasyMall项目。首先进行分包。创建UserServiceUserDao。创建User javabean。如图-28所示:

 

-28

2.1.2. 实现Dao

将操作数据库相关的代码写到UserDao中。如图-29所示:

 

-29

2.1.3. 实现Service

将业务逻辑代码写到UserService中。

 

-30

2.1.4. 实现web

web层只存放视图相关代码。如图-31所示:

 

-31

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值