全栈工程师修炼指南
熊燚(四火)
Oracle首席软件工程师
立即订阅
2286 人已学习
课程目录
已更新 43 讲 / 共 40 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 从成长角度看,为什么你应该成为全栈工程师?
免费
学习路径 | 怎样成为一名优秀的全栈工程师?
导读 | 如何学习这个专栏?
第一章 网络协议和 Web 接口 (6讲)
01 | 网络互联的昨天、今天和明天:HTTP 协议的演化
02 | 为HTTP穿上盔甲:HTTPS
03 | 换个角度解决问题:服务端推送技术
04 | 工整与自由的风格之争:SOAP和REST
05 | 权衡的艺术:漫谈Web API的设计
06 | 特别放送:北美大厂如何招聘全栈工程师?
第二章 欢迎来到 MVC 的世界 (7讲)
07 | 解耦是永恒的主题:MVC框架的发展
08 | MVC架构解析:模型(Model)篇
09 | MVC架构解析:视图(View)篇
10 | MVC架构解析:控制器(Controller)篇
11 | 剑走偏锋:面向切面编程
12 | 唯有套路得人心:谈谈Java EE的那些模式
13 | 特别放送:选择比努力更重要
第三章 从后端到前端 (7讲)
14 | 别有洞天:从后端到前端
15 | 重剑无锋,大巧不工:JavaScript面向对象
16 | 百花齐放,百家争鸣:前端MVC框架
17 | 不一样的体验:交互设计和页面布局
18 | 千言万语不及一幅画:谈谈数据可视化
19 | 打开潘多拉盒子:JavaScript异步编程
20 | 特别放送:全栈团队的角色构成
第四章 数据持久化 (7讲)
21 | 赫赫有名的双刃剑:缓存(上)
22 | 赫赫有名的双刃剑:缓存(下)
23 | 知其然,知其所以然:数据的持久化和一致性
24 | 尺有所短,寸有所长:CAP和数据存储技术选择
25 | 设计数据持久层(上):理论分析
26 | 设计数据持久层(下):案例介绍
27 | 特别放送:聊一聊代码审查
第五章 寻找最佳实践 (6讲)
28 | Ops三部曲之一:配置管理
29 | Ops三部曲之二:集群部署
30 | Ops三部曲之三:测试和发布
31 | 防人之心不可无:网站安全问题窥视
32 | 和搜索引擎的对话:SEO的原理和基础
33 | 特别放送:聊一聊程序员学英语
第六章 专题 (7讲)
34 | 网站性能优化(上)
35 | 网站性能优化(下)
36 | 全栈开发中的算法(上)
37 | 全栈开发中的算法(下)
38 | 分页的那些事儿
39 | XML、JSON、YAML比较
40 | 全栈衍化:让全栈意味着更多
全栈工程师修炼指南
登录|注册

12 | 唯有套路得人心:谈谈Java EE的那些模式

四火 2019-10-07
你好,我是四火。
本章我们以 MVC 架构为核心,已经介绍了很多设计模式,今天我们将进一步泛化,谈论更多的 Java EE 模式。这些模式,就是我们在搭建全栈架构、设计的工作过程中,不断总结和应用的“套路”。

背景和概念

我相信很多人都接触过面向对象模式,可是,模式是个通用词,面向对象只是其中的一个分支而已。事实上,我们本章的重点 MVC 本身就是一种典型的模式,介绍过的 CQRS 是模式,学习过的 AOP、IoC,这些其实也都是模式。
因此,和其它领域的技术相比,作为全栈工程师的我们,更有机会接触到各种模式。这些模式可以帮助我们在设计开发工作中拓宽思路,使用精巧的代码结构来解决实际问题。
说到这里,你可能会问,为什么这次谈论模式的时候,要使用 Java EE 这个编程语言前缀?模式不是应该和语言无关吗?
一点都没错,模式就是和语言无关的,但是,诞生模式最多的温床,就是 Java 语言。
世界上没有任何一门语言,像 Java 一样,几乎一直被黑,但是生态圈一直在壮大,且在工业界具备如此统治力。很多人说,Java 是一门平庸的语言,这可能没错,但是它对于底层细节的封装和语言本身的难度做到了很好的平衡,它不一定会有多精巧、多出彩,但是新手也可以顺利完成工作,且不容易写出破坏性强、其他人难以接手的代码,这对于要规模、要量产的工业界来说,简直是超级福音。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《全栈工程师修炼指南》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(4)

  • pyhhou
    1. 在 Node 中使用第三方的包,调用包中的 API 函数进行 DAO,这些 API 函数往往比较灵活,你可以写 SQL 语句,也可以使用它既定的模版格式,但是一般选用后者,因为后期换库的话会比较好维护

    2. 文章中提到说过滤器其实是 AOP 模式的一个子模式,二者的思想其实都是把逻辑流程当中,具有共性的东西提取出来,达到解耦合的目的。个人理解,过滤器往往是针对一个 URL 的请求输入进行处理,但是对于一些中间的逻辑解耦来说,直接使用过滤器就不太合适。

    作者回复: 👍

    2019-10-13
  • anginiit
    有一个大项目是jpa+oracle,其他的有jpa+mysql,也有mybatis+mysql的,jpa的底层是hibernate,记得前几年前使用jpa的时候遇到很多问题,一个大项目下来,基本原理也就都明了了。
    2019-10-11
  • tyul
    1. 主要通过 Mybatis 和 Spring Data JPA 访问 MySQL 数据库
    2. 过滤器和 AOP 都可以实现通用逻辑的处理,但 AOP 可以更灵活的处理各个方法不同的需求,如自定义的分布式锁注解,可以根据实际场景改变超时时间等。

    作者回复: 关于#2,表述不太妥当,二者其实都是 AOP,一个是 Tomcat 中配置过滤器,一个是 Spring 配置切面逻辑。

    2019-10-07
  • 御用厨子
    1、Dao层主要还是访问数据库,通过Mybatis。
    2、过滤器主要是能避免大量重复的代码出现,如简单的用户校验、有无Session校验和实现一些简单的功能(如访问计数器、改变传入参数字符格式)。而且过滤器能后期加入到服务中,不必修改已有业务逻辑代码。维护相对简单一些。

    作者回复: 关于 #2,无论是使用 Tomcat 的过滤器,还是使用 Spring 配置切面逻辑,其实都能避免重复代码。所以这个表述不是很妥当。

    2019-10-07
收起评论
4
返回
顶部