网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 设计模式就该这样学(基于经典框架源码和真实业务场景)/咕泡学院Java架构师成长丛书 |
分类 | |
作者 | 谭勇德 |
出版社 | 电子工业出版社 |
下载 | ![]() |
简介 | 内容推荐 本书从软件架构设计推荐的通用技能UML开始,重点介绍常用的类图和时序图;然后介绍软件架构设计常用的七大原则;接着结合JDK、Spring、MyBatis、Tomcat、Netty等经典框架源码对GoF的23种设计模式展开分析,并结合作者多年“踩坑填坑”和“教学答疑”经验,用深刻、全面、通俗、生动、有趣、接地气的方式结合真实业务场景分析每种设计模式,治愈“设计模式选择困难症”;之后介绍4种常用的新设计模式;很后总结软件架构、设计模式与应用框架之间的区别。如果你已经有编程经验,那么你一定要学一遍设计模式;如果你是资深工程师或者架构师,那么本书将颠覆你以前的认知;如果你觉得设计模式晦涩难懂,那么本书一定能让你醍醐灌顶;如果你看框架源码总是力不从心,那么本书就是“内功心法”。 作者简介 谭勇德(Tom) 咕泡学院联合创始人。“手写源码学习法”开创者、“Java架构师成长路径”制定人、“程序员职业成长路线图”制定者,Java架构师讲师。著有畅销书《Spring 5核心原理与30个类手写实战》《Netty 4核心原理与手写RPC框架实战》。 10余年Java从业经验,在大型IT公司担任过CTO、系统架构师。精通Java、JS、CSS、AS、PHP等;负责过多个大型分布式系统的微服务架构的技术改造;多年来对主流技术框架有深入研究及独特见解;开发过多套企业内部UI框架和ORM框架;热衷于分享经验,共同进步。 格言:不只做一个技术者,更要做一个思考者。 目录 篇 软件设计前奏篇 章 重新认识UML 2 1.1 UML的定义 2 1.2 UML应用场景 2 1.3 UML基本构件简介 3 1.3.1 事物 3 1.3.2 关系 5 1.3.3 图 6 第2章 设计模式常用的UML图 7 2.1 类图 7 2.1.1 继承关系 8 2.1.2 实现关系 8 2.1.3 组合关系 9 2.1.4 聚合关系 10 2.1.5 关联关系 11 2.1.6 依赖关系 12 2.1.7 类关系记忆技巧 14 2.2 时序图 15 2.2.1 时序图的作用 15 2.2.2 时序图组成元素 16 2.2.3 时序图组合片段 17 2.2.4 时序图画法及应用实践 19 第3章 七大软件架构设计原则 22 3.1 开闭原则 22 3.1.1 开闭原则的定义 22 3.1.2 使用开闭原则解决实际问题 23 3.2 依赖倒置原则 24 3.2.1 依赖倒置原则的定义 24 3.2.2 使用依赖倒置原则解决实际问题 25 3.3 单一职责原则 28 3.3.1 单一职责原则的定义 28 3.3.2 使用单一职责原则解决实际问题 28 3.4 接口隔离原则 31 3.4.1 接口隔离原则的定义 31 3.4.2 使用接口隔离原则解决实际问题 31 3.5 迪米特法则 33 3.5.1 迪米特法则的定义 33 3.5.2 使用迪米特法则解决实际问题 33 3.6 里氏替换原则 35 3.6.1 里氏替换原则的定义 35 3.6.2 使用里氏替换原则解决实际问题 36 3.7 合成复用原则 40 3.7.1 合成复用原则的定义 40 3.7.2 使用合成复用原则解决实际问题 40 3.8 软件架构设计原则小结 42 第4章 关于设计模式的那些事儿 43 4.1 本书与GoF的《设计模式》的关系 43 4.2 为什么一定要学习设计模式 45 4.2.1 写出优雅的代码 45 4.2.2 更好地重构项目 47 4.2.3 经典框架都在用设计模式解决问题 58 第2篇 创建型设计模式 第5章 简单工厂模式 60 5.1 工厂模式的历史由来 60 5.2 简单工厂模式概述 61 5.2.1 简单工厂模式的定义 61 5.2.2 简单工厂模式的应用场景 61 5.2.3 简单工厂模式的UML类图 61 5.2.4 简单工厂模式的通用写法 62 5.3 使用简单工厂模式封装产品创建细节 63 5.4 简单工厂模式在框架源码中的应用 66 5.4.1 简单工厂模式在JDK源码中的应用 66 5.4.2 简单工厂模式在Logback源码中的应用 67 5.5 简单工厂模式扩展 67 5.5.1 简单工厂模式的优点 67 5.5.2 简单工厂模式的缺点 67 第6章 工厂方法模式 68 6.1 工厂方法模式概述 68 6.1.1 工厂方法模式的定义 68 6.1.2 工厂方法模式的应用场景 69 6.1.3 工厂方法模式的UML类图 69 6.1.4 工厂方法模式的通用写法 70 6.2 使用工厂方法模式实现产品扩展 71 6.3 工厂方法模式在Logback源码中的应用 72 6.4 工厂方法模式扩展 73 6.4.1 工厂方法模式的优点 73 6.4.2 工厂方法模式的缺点 73 第7章 抽象工厂模式 74 7.1 抽象工厂模式概述 74 7.1.1 抽象工厂模式的定义 74 7.1.2 关于产品等级结构和产品族 75 7.1.3 抽象工厂模式的应用场景 76 7.1.4 抽象工厂模式的UML类图 76 7.1.5 抽象工厂模式的通用写法 76 7.2 使用抽象工厂模式解决实际问题 78 7.2.1 使用抽象工厂模式支持产品扩展 78 7.2.2 使用抽象工厂模式重构数据库连接池 81 7.3 抽象工厂模式在Spring源码中的应用 88 7.4 抽象工厂模式扩展 89 7.4.1 抽象工厂模式的优点 89 7.4.2 抽象工厂模式的缺点 90 第8章 单例模式 91 8.1 单例模式概述 91 8.1.1 单例模式的定义 91 8.1.2 单例模式的应用场景 91 8.1.3 单例模式的UML类图 92 8.1.4 单例模式的通用写法 92 8.2 使用单例模式解决实际问题 93 8.2.1 饿汉式单例写法的弊端 93 8.2.2 还原线程破坏单例的事故现场 93 8.2.3 双重检查锁单例写法闪亮登场 97 8.2.4 看似完美的静态内部类单例写法 100 8.2.5 还原反射破坏单例模式的事故现场 101 8.2.6 更加优雅的枚举式单例写法问世 103 8.2.7 还原反序列化破坏单例模式的事故现场 108 8.2.8 使用容器式单例写法解决大规模生产单例的问题 114 8.2.9 ThreadLocal单例详解 115 8.3 单例模式在框架源码中的应用 116 8.3.1 单例模式在JDK源码中的应用 116 8.3.2 单例模式在Spring源码中的应用 117 8.4 单例模式扩展 121 8.4.1 单例模式的优点 121 8.4.2 单例模式的缺点 121 第9章 原型模式 122 9.1 原型模式概述 122 9.1.1 原型模式的定义 122 9.1.2 原型模式的应用场景 123 9.1.3 原型模式的UML类图 124 9.1.4 原型模式的通用写法 124 9.2 使用原型模式解决实际问题 126 9.2.1 分析JDK浅克隆API带来的问题 126 9.2.2 使用序列化实现深克隆 129 9.2.3 还原克隆破坏单例的事故现场 131 9.3 原型模式在框架源码中的应用 132 9.3.1 原型模式在JDK源码中的应用 132 9.3.2 原型模式在Spring源码中的应用 133 9.4 原型模式扩展 134 9.4.1 原型模式的优点 134 9.4.2 原型模式的缺点 134 0章 建造者模式 135 10.1 建造者模式概述 135 10.1.1 建造者模式的定义 135 10.1.2 建造者模式的应用场景 136 10.1.3 建造者模式的UML类图 136 10.1.4 建造者模式的通用写法 137 10.2 使用建造者模式解决实际问题 138 10.2.1 建造者模式的链式写法 138 10.2.2 使用静态内部类实现建造者模式 140 10.2.3 使用建造者模式动态构建SQL语句 142 10.3 建造者模式在框架源码中的应用 153 10.3.1 建造者模式在JDK源码中的应用 153 10.3.2 建造者模式在MyBatis源码中的应用 154 10.3.3 建造者模式在Spring源码中的应用 154 10.4 建造者模式扩展 155 10.4.1 建造者模式与工厂模式的区别 155 10.4.2 建造者模式的优点 155 10.4.3 建造者模式的缺点 155 第3篇 结构型设计模式 1章 代理模式 158 11.1 代理模式概述 158 11.1.1 代理模式的定义 158 11.1.2 代理模式的应用场景 158 11.1.3 代理模式的UML类图 159 11.1.4 代理模式的通用写法 159 11.2 使用代理模式解决实际问题 161 11.2.1 从静态代理到动态代理 161 11.2.2 三层架构中的静态代理 163 11.2.3 使用动态代理实现无感知切换数据源 168 11.2.4 手写JDK动态代理核心原理 169 11.2.5 CGLib动态代理API原理分析 176 11.2.6 CGLib和JDK动态代理对比分析 183 11.3 代理模式在框架源码中的应用 184 11.3.1 代理模式在Spring源码中的应用 184 11.3.2 代理模式在MyBatis源码中的应用 185 11.4 代理模式扩展 189 11.4.1 静态代理和动态代理的区别 189 11.4.2 代理模式的优点 189 11.4.3 代理模式的缺点 190 2章 门面模式 191 12.1 门面模式概述 191 12.1.1 门面模式的定义 191 12.1.2 门面模式的应用场景 191 12.1.3 门面模式的UML类图 192 12.1.4 门面模式的通用写法 193 12.2 使用门面模式整合已知API的功能 194 12.3 门面模式在框架源码中的应用 196 12.3.1 门面模式在Spring源码中的应用 196 12.3.2 门面模式在MyBatis源码中的应用 198 12.3.3 门面模式在Tomcat源码中的应用 199 12.4 门面模式扩展 200 12.4.1 门面模式的优点 200 12.4.2 门面模式的缺点 200 3章 装饰器模式 201 13.1 装饰器模式概述 201 13.1.1 装饰器模式的定义 201 13.1.2 装饰器模式的应用场景 201 13.1.3 装饰器模式的UML类图 202 13.1.4 装饰器模式的通用写法 203 13.2 使用装饰器模式解决实际问题 205 13.2.1 使用装饰器模式解决煎饼“加码”问题 205 13.2.2 使用装饰器模式扩展日志格式输出 209 13.3 装饰器模式在框架源码中的应用 212 13.3.1 装饰器模式在JDK源码中的应用 212 13.3.2 装饰器模式在Spring源码中的应用 212 13.3.3 装饰器模式在MyBatis源码中的应用 213 13.4 装饰器模式扩展 213 13.4.1 装饰器模式与代理模式的区别 213 13.4.2 装饰器模式的优点 214 13.4.3 装饰器模式的缺点 214 4章 享元模式 215 14.1 享元模式概述 215 14.1.1 享元模式的定义 215 14.1.2 享元模式的应用场景 216 14.1.3 享元模式的UML类图 216 14.1.4 享元模式的通用写法 217 14.2 使用享元模式解决实际问题 218 14.2.1 使用享元模式实现资源共享池 218 14.2.2 使用享元模式实现数据库连接池 220 14.3 享元模式在框架源码中的应用 222 14.3.1 享元模式在JDK源码中的应用 222 14.3.2 享元模式在Apache Pool源码中的应用 224 14.4 享元模式扩展 225 14.4.1 享元模式的内部状态和外部状态 225 14.4.2 享元模式的优点 226 14.4.3 享元模式的缺点 226 5章 组合模式 227 15.1 组合模式概述 227 15.1.1 组合模式的定义 227 15.1.2 组合模式的应用场景 228 15.1.3 透明组合模式的UML类图及通用写法 229 15.1.4 安全组合模式的UML类图及通用写法 232 15.2 使用组合模式解决实际问题 233 15.2.1 使用透明组合模式实现课程目录结构 233 15.2.2 使用安全组合模式实现无限级文件系统 237 15.3 组合模式在框架源码中的应用 240 15.3.1 组合模式在JDK源码中的应用 240 15.3.2 组合模式在MyBatis源码中的应用 243 15.4 组合模式扩展 244 …… |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。