![]()
内容推荐 本书以软件架构师的能力培养为切入点,结合作者在过去10多年的工作中积累的经验,介绍了一名合格甚至优秀的架构师应该具备的能力。 本书分为4篇,总计9章,基本涵盖了大部分生产环境下的系统设计原则以及方案。本书主要内容有基本设计原则、轻松应对后续的变化、优雅地暴露内部属性、复杂逻辑的拆解与协同、复用的人性化设计、屏蔽外部依赖的防火墙设计、事件的分散性与协议化封装、基于Reactor模式的系统优化、代码边界的延伸——善用SDK。 本书尽管内容篇幅短小,但是信息量相当密集。本书适合具有一定编程经验,在业务上仍然有追求,希望能晋升为软件架构师的软件开发人员阅读。同时,对设计模式感兴趣的初级开发人员,可以通过本书掌握与架构设计相关的知识。 作者简介 郝佳,计算机专业硕士学位,曾发表过多篇论文并先后被EI、SCI收录;2008年辽宁省教育厅科技计划项同研究人之一;长期奋斗于J2EE领域,2013年入职阿里巴巴,目前担任业务中问件软件架构师;一直专注于中间件领域,拥有6项技术专利,擅长系统的性能优化;热衷于研究各种优秀的开源代码并从中进行总结,从而实现个人技能的提高,尤其对Spring、Hibernate、MvBatis、JMs、TOmcat,等源码有着深刻的理解和认识。 目录 第1章 基本设计原则 1.1 单一职责原则 1.1.1 简述 1.1.2 示例 1.1.3 小结 1.2 开闭原则 1.2.1 简述 1.2.2 示例 1.2.3 小结 1.3 依赖倒置原则 1.3.1 简述 1.3.2 示例 1.3.3 小结 1.4 里氏替换原则 1.4.1 简述 1.4.2 示例 1.4.3 小结 1.5 迪米特法则 1.5.1 简述 1.5.2 示例 1.5.3 小结 1.6 接口隔离原则 1.7 总结 第2章 轻松应对后续的变化 2.1 抛出问题 2.2 问题分析 2.3 Spring中的PostProcessor机制 2.3.1 示例 2.3.2 思路抽象 2.4 设计优化 2.4.1 需求分析与设计 2.4.2 代码实现 2.5 总结 第3章 优雅地暴露内部属性 3.1 抛出问题 3.2 问题分析 3.2.1 违背设计原则 3.2.2 设计看似优雅,实则不然 3.3 Spring中的Aware机制 3.3.1 Aware概述 3.3.2 ApplicationContetAware的实现逻辑 3.3.3 思路抽象 3.3.4 优势分析 3.4 问题优化 3.5 总结 第4章 复杂逻辑的拆解与协同 4.1 抛出问题 4.2 问题分析 4.2.1 PostProcessor模式的错误选型 4.2.2 模板方法模式的错误选型 4.3 Tomcat中的PipeLine机制 4.3.1 Tomcat容器结构与协同处理 4.3.2 思路抽象 4.4 问题优化 4.4.1 设计优化 4.4.2 关键代码 4.4.3 链表与for循环的区别 4.5 总结 第5章 复用的人性化设计 5.1 抛出问题 5.2 问题分析 5.2.1 大量冗余代码 5.2.2 AOP切割原子逻辑 5.3 Spring中事务的封装与复用 5.3.1 Spring的事务处理 5.3.2 思路抽象 5.4 问题优化 5.4.1 注解设计 5.4.2 定义切面逻辑 5.4.3 定义拦截器 5.5 总结 第6章 屏蔽外部依赖的防火墙设计 6.1 抛出问题 6.2 问题分析 6.2.1 服务雪崩 6.2.2 逻辑入侵 6.3 思路抽象 6.4 问题优化 6.4.1 优化对接层 6.4.2 构建防腐层 6.5 总结 第7章 事件的分散性与协议化封装 7.1 抛出问题 7.2 问题分析 7.2.1 扩展类爆炸 7.2.2 扩展机制与监听机制的错用 7.3 WebSocket事件的封装与协议化 7.3.1 WebSocket 7.3.2 通信设计 7.3.3 思路抽象 7.4 问题优化 7.4.1 生产者视角 7.4.2 消费者视角 7.5 总结 第8章 基于Reactor模式的系统优化 8.1 抛出问题 8.2 问题分析 8.2.1 加机器 8.2.2 串行调用改为并发调用 8.2.3 预处理 8.3 Netty中的Reactor模式 8.3.1 Netty概述 8.3.2 BIO与NIO 8.3.3 Reactor编程模型 8.3.4 思路抽象 8.4 问题优化 8.4.1 方案设计 8.4.2 代码优化 8.5 总结 第9章 代码边界的延伸——善用SDK 9.1 抛出问题 9.2 问题分析与优化 9.2.1 SDK与API的区别 9.2.2 SDK可以解决的问题 9.2.3 SDK缺点与解决 |