# web-evolution **Repository Path**: LeopPro/web-evolution ## Basic Information - **Project Name**: web-evolution - **Description**: 用简单的代码演示了JavaWeb后端结构的演进过程。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-09-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 以Web开发为例的软件结构演进过程 > 知识点:面向对象设计、设计模式、单元测试、团队合作 需求:留言墙,不需要登录,访客可以看到留言可以发布留言 我们使用 #### 第一式: 别跟我提什么面向对象设计、团队合作,老夫敲代码,拿起键盘就是干! Code: type1.jsp 优点:简单,直接,就是干。 缺点:所有代码都毁在一起,很难分工合作,很难适应变化,牵一发而动全身。需求一旦复杂,就是噩梦,这样的代码谁也不敢维护。 #### 第二式: 尝试把Java代码和HTML拆开,尽量解耦,妈妈再也不用担心前端动我的代码了。 Code:pro.leop.webevolution.type2 优点:前后端代码分离,前端代码可以拿给前端工程师去做,完成后简单整合即可。 缺点:后端代码依旧是毁在一起,连接数据库,处理数据等操作都在Controller层。 #### 第三式: 按Controller、Service、DAO分层。贫血模型。 Code:pro.leop.webevolution.type3 优点:似乎实现了逻辑分层,似乎可以进行分工了 缺点:同上,真的实现了分层么,多人并行开发要如何合作呢? #### 第四式: 啥?接口是啥?能吃么? Code:pro.leop.webevolution.type4 优点:面向接口编程,上游提供接口,下游实现,基本实现层间解耦 缺点:层间依赖关系没有完全解耦,依赖必须全部满足才可以运行。 #### 第五式: IoC、DI的用武之地,如何将相关的模块真正解耦 Code:pro.leop.webevolution.type5 优点:真正的解耦了,单独模块可以独立测试 缺点:稍微复杂些,不过我们可以通过ioc框架帮助我们实现