新書推薦:
《
有趣的中国古建筑
》
售價:HK$
67.0
《
十一年夏至
》
售價:HK$
76.2
《
如何打造成功的商业赛事
》
售價:HK$
89.5
《
万千教育学前·透视学前儿童的发展:解析幼儿教师常问的那些问题
》
售價:HK$
58.2
《
慈悲与玫瑰
》
售價:HK$
87.4
《
启蒙的辩证:哲学的片简(法兰克福学派哲学经典,批判理论重要文本)
》
售價:HK$
76.2
《
云中记
》
售價:HK$
76.2
《
中国古代妇女生活(中国古代生活丛书)
》
售價:HK$
47.0
|
內容簡介: |
本书从软件架构设计必备的通用技能UML开始,重点介绍常用的类图和时序图;然后介绍软件架构设计常用的七大原则;接着结合JDK、Spring、MyBatis、Tomcat、Netty等经典框架源码对GoF的23种设计模式展开分析,并结合作者多年“踩坑填坑”和“教学答疑”经验,用深刻、全面、通俗、生动、有趣、接地气的方式结合真实业务场景分析每种设计模式,治愈“设计模式选择困难症”;之后介绍4种常用的新设计模式;*后总结软件架构、设计模式与应用框架之间的区别。如果你已经有编程经验,那么你一定要学一遍设计模式;如果你是资深工程师或者架构师,那么本书将颠覆你以前的认知;如果你觉得设计模式晦涩难懂,那么本书一定能让你醍醐灌顶;如果你看框架源码总是力不从心,那么本书就是“内功心法”。
|
關於作者: |
谭勇德,笔名Tom,咕泡学院联合创始人。“手写源码学习法”开创者、“Java架构师成长路径”制定人、“程序员职业成长路线图”制定者,Java架构师讲师。著有畅销书《Spring 5核心原理与30个类手写实战》《Netty 4核心原理与手写RPC框架实战》,电子工业出版社有限公司“Java架构师成长丛书”长期签约作者。10余年Java从业经验,在大型IT公司担任过CTO、系统架构师。精通Java、JS、CSS、AS、PHP等;负责过多个大型分布式系统的微服务架构的技术改造;多年来对主流技术框架有深入研究及独特见解;开发过多套企业内部UI框架和ORM框架;热衷于分享经验,共同进步。格言:不只做一个技术者,更要做一个思考者。
|
目錄:
|
第1篇软件设计前奏篇
第1章重新认识UML2
1.1UML的定义2
1.2UML应用场景2
1.3UML基本构件简介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.9ThreadLocal单例详解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
第10章建造者模式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篇结构型设计模式
第11章代理模式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.5CGLib动态代理API原理分析176
11.2.6CGLib和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
第12章门面模式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
第13章装饰器模式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
第14章享元模式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
第15章组合模式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
15.4.1
|
|