什么是系统架构
经常提到的系统架构:三层架构与mvc。
这两种架构都是为了降低系统模块间的耦合度。
三层架构
视图层 View、服务层(业务逻辑层) Service、持久层(数据访问层) DAO(不念刀)。
View:接受用户提交请求的代码(交互)
Service:系统业务逻辑在这里完成
DAO:直接操作数据库的代码
系统复杂度,架构就是解决系统复杂度问题。
为了更好地降低各层间的耦合度,三层架构程序中,采用面向抽象编程。
View -> Service -> DAO -> 数据库(查询效率高,适合复杂查询,安全性好,比普通文件好)
开发中,业务才是核心,而业务也是有复杂度的。
复杂度是分等级的:
- 简单业务 只开启 1 个事务
- 普通业务 开启 3 个事务
- 复杂业务 开启 7 个事务
多张表之间有依赖关系。 强关联性。
所有东西全都写在 main 里面 ->高耦合。
一个类只做一种事 (内聚)
工具类: 日期管理
依赖
(所以用一个专门负责日期的运算方法解耦)
数学工具类:四则运算
日期也有加减四则运算
一个方法只做一件事。
写且只写一次
重构原则
事不过三,三则重构
提取方法
提取类
A类
四则运算
B类
四则运算
C类
四则运算
MVC(视图层)
View
model:
- 数据模型 Entity
- 业务模型 Service
控制器(controller):
- 处理用户请求
Servlet 服务器小程序(一个类做了两种事)
- 处理业务逻辑
- 处理页面展示
JSP java服务器页面 (JSP就是一个Servlet) 处理页面展示 (把处理页面的功能分离出来了) 是一门技术
小脚本
<%%>
登录功能
业务逻辑完备
独立的系统
拆分成各种服务
Doget 和 Dopost
Doget:传参数是明文,传参数有大小限制(4kb的样子)
Dopost:传参数是密文, post没有参数限制,可以上传文件
最重要的区别:语义区别, get是获取得到, post是提交。Get 就应该用于获取数据,Post用于提交数据。
post请求实际是两次(第一次请求问服务器能不能接受数据,第二次才提交), get是一次所以post效率比较低。
幂等性: 无论调用多少次,都是相同的结果。
pos不具有幂等性