[2册设计模式就该这样学 基于经典框架源码和真实业务场景+Spring5核心原理与30个类手写实战 软件架构设计GoF设计模式Spring5实战]

Вес товара: ~0.7 кг. Указан усредненный вес, который может отличаться от фактического. Не включен в цену, оплачивается при получении.
Описание товара
- Информация о товаре
- Фотографии
![[基本信息.jpg]](https://img.alicdn.com/imgextra/i4/2780943040/TB2YFtCtuuSBuNjSsziXXbq8pXa_!!2780943040.jpg)
[书名:设计模式就该这样学]
[定价:118.00元]
[出版社: 电子工业出版社]
[ISBN:9787121392085]
[版次:1]
[定价:118]
[出版时间:2020-07-01]
[书名:] [SPRING5核心原理与30个类手写实战]
[书号:] 9787121367410
[定价:] 118.00
[作者/编者:] [谭勇德]
[出版社:] [电子工业出版社]
[出版时间:] [2019年07月]
![[内容简介.jpg]](https://img.alicdn.com/imgextra/i2/2780943040/TB28ZOJtCBYBeNjy0FeXXbnmFXa_!!2780943040.jpg)
[书名:设计模式就该这样学]
[本书从软件架构设计的通用技能UML开始,重点介绍常用的类图和时序图;然后介绍软件架构设计常用的七大原则;接着结合JDK、Spring、MyBatis、Tomcat、Netty等经典框架源码对GoF的23种设计模式展开分析,并结合作者多年]“[踩坑填坑]”[和]“[教学答疑]”[经验,用深刻、全面、通俗、生动、有趣、接地气的方式结合真实业务场景分析每种设计模式,治愈]“[设计模式选择困难症]”[;之后介绍4种常用的新设计模式;后总结软件架构、设计模式与应用框架之间的区别。]
[如果你已经有编程经验,那么你一定要学一遍设计模式;如果你是资深工程师或者架构师,那么本书将颠覆你以前的认知;如果你觉得设计模式晦涩难懂,那么本书一定能让你醍醐灌顶;如果你看框架源码总是力不从心,那么本书就是]“[内功心法]”[。]
[书名:Spring 5核心原理与30个类手写实战]
[《Spring 5核心原理与30个类手写实战》基于编程开发实践,不仅深度解析Spring 5的原理与新特性,更从环境准备、顶层结构设计、数据访问等方面一步步地推导出Spring的设计原理。在每个知识点上,均以大量的经典代码案例辅助讲解,使理论紧密联系实际。后手写30个类,以体会Spring作者的创作过程,让每一位读者学以致用。]
[对于立志成为Java架构师的技术人员,以及对以Spring为核心的Java Web开发感兴趣的计算机专业高校生、在职Java开发人员来说,本书是一本具备强实战意义的技术升级指南。读者通过本书可以看源码不再]“[晕车]”[,轻松找到入口;系统学习设计思想,提高解决问题的效率;培养架构思维能力,以及自驱学习能力]
![[目录.jpg]](https://img.alicdn.com/imgextra/i1/2780943040/TB2gKZStXmWBuNjSspdXXbugXXa_!!2780943040.jpg)
[书名:设计模式就该这样学]
[1篇 ] [软件设计前奏篇]
[1章 ] [重新认识UML2]
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]
[书名:] [SPRING5核心原理与30个类手写实战]
[1篇 Spring内功心法]
[1章 软件架构设计原则 2]
[1.1 开闭原则 2]
[1.2 依赖倒置原则 4]
[1.3 单一职责原则 7]
[1.4 接口隔离原则 10]
[1.5 迪米特原则 12]
[1.6 里氏替换原则 14]
[1.7 合成复用原则 19]
[1.8 设计原则总结 20]
[2章 Spring中常用的设计模式 21]
[2.1 为什么要从设计模式开始 21]
[2.1.1 写出优雅的代码 22]
[2.1.2 更好地重构项目 24]
[2.1.3 经典框架都在用设计模式解决问题 36]
[2.2 工厂模式详解 36]
[2.2.1 工厂模式的由来 36]
[2.2.2 简单工厂模式 37]
[2.2.3 工厂方法模式 41]
[2.2.4 抽象工厂模式 43]
[2.2.5 利用工厂模式重构的实践案例 47]
[2.3 单例模式详解 53]
[2.3.1 单例模式的应用场景 53]
[2.3.2 饿汉式单例模式 53]
[2.3.3 懒汉式单例模式 54]
[2.3.4 反射破坏单例 60]
[2.3.5 序列化破坏单例 61]
[2.3.6 注册式单例模式 68]
[2.3.7 线程单例实现ThreadLocal 74]
[2.3.8 单例模式小结 75]
[2.4 原型模式详解 75]
[2.4.1 原型模式的应用场景 75]
[2.4.2 浅克隆 77]
[2.4.3 深克隆 79]
[2.4.4 克隆破坏单例模式 81]
[2.4.5 clone()方法的源码 82]
[2.5 代理模式详解 82]
[2.5.1 代理模式的应用场景 82]
[2.5.2 静态代理 83]
[2.5.3 动态代理 88]
[2.5.4 代理模式与Spring 107]
[2.5.5 静态代理和动态代理的本质区别 108]
[2.5.6 代理模式的优缺点 109]
[2.6 wei派模式详解 109]
[2.6.1 wei派模式的定义及应用场景 109]
[2.6.2 wei派模式在源码中的体现 111]
[2.7 策略模式详解 .114]
[2.7.1 策略模式的应用场景 114]
[2.7.2 用策略模式实现选择支付方式的业务场景 .114]
[2.7.3 策略模式在JDK源码中的体现 122]
[2.7.4 策略模式的优缺点 125]
[2.7.5 wei派模式与策略模式综合应用 125]
[2.8 模板模式详解 129]
[2.8.1 模板模式的应用场景 129]
[2.8.2 利用模板模式重构JDBC操作业务场景 132]
[2.8.3 模板模式在源码中的体现 136]
[2.8.4 模板模式的优缺点 138]
[2.9 适配器模式详解139]
[2.9.1 适配器模式的应用场景 139]
[2.9.2 重构三方登录自由适配的业务场景141]
[2.9.3 适配器模式在源码中的体现 149]
[2.9.4 适配器模式的优缺点 153]
[2.10 装饰者模式详解 153]
[2.10.1 装饰者模式的应用场景 153]
[2.10.2 装饰者模式和适配器模式对比 163]
[2.10.3 装饰者模式在源码中的应用 163]
[2.10.4 装饰者模式的优缺点 165]
[2.11 观察者模式详解 165]
[2.11.1 观察者模式的应用场景 165]
[2.11.2 观察者模式在源码中的应用 175]
[2.11.3 基于Guava API轻松落地观察者模式 176]
[2.11.4 观察者模式的优缺点 177]
[2.12 各设计模式的总结与对比 177]
[2.12.1 GoF 23种设计模式简介 177]
[2.12.2 设计模式之间的关联关系 178]
[2.12.3 Spring中常用的设计模式 182]
[2.13 Spring中的编程思想总结 183]
[2篇 Spring环境预热]
[3章 Spring的前世今生 186]
[3.1 *从Bean开始 187]
[3.2 Spring的设计初衷 188]
[3.3 BOP编程伊始 188]
[3.4 理解BeanFactory 189]
[3.5 AOP编程理念 189]
[4章 Spring 5系统架构 191]
[4.1 核心容器 192]
[4.2 AOP和设备支持192]
[4.3 数据访问与集成193]
[4.4 Web组件 194]
[4.5 通信报文 194]
[4.6 集成测试 194]
[4.7 集成兼容 194]
[4.8 各模块之间的依赖关系 194]
[5章 Spring版本命名规则 196]
[5.1 常见软件的版本命名 196]
[5.2 语义化版本命名通行规则 197]
[5.3 商业软件中常见的修饰词 197]
[5.4 软件版本号使用限定 198]
[5.5 Spring版本命名规则 199]
[6章 Spring源码下载及构建技巧 200]
[6.1 Spring 5源码下载 200]
[6.2 基于Gradle的源码构建技巧 201]
[6.3 Gradle构建过程中的坑 207]
[3篇 Spring核心原理]
[7章 用300行代码手写提炼Spring核心原理 210]
[7.1 自定义配置 210]
[7.1.1 配置application.properties文件 210]
[7.1.2 配置web.xml文件 210]
[7.1.3 自定义注解 211]
[7.1.4 配置注解 212]
[7.2 容器初始化 213]
[7.2.1 实现1.0版本 213]
[7.2.2 实现2.0版本 216]
[7.2.3 实现3.0版本 223]
[7.3 运行效果演示 227]
[8章 一步一步手绘Spring IoC运行时序图 228]
[8.1 Spring核心之IoC容器初体验 228]
[8.1.1 再谈IoC与DI 228]
[8.1.2 Spring核心容器类图 229]
[8.1.3 Web IoC容器初体验 232]
[8.2 基于XML的IoC容器的初始化 237]
[8.2.1 寻找入口 238]
[8.2.2 获得配置路径 238]
[8.2.3 开始启动 240]
[8.2.4 创建容器 242]
[8.2.5 载入配置路径 243]
[8.2.6 分配路径处理策略 244]
[8.2.7 解析配置文件路径 247]
[8.2.8 开始读取配置内容 249]
[8.2.9 准备文档对象 250]
[8.2.10 分配解析策略 251]
[8.2.11 将配置载入内存 252]
[8.2.12 载入<bean>元素 257]
[8.2.13 载入<property>元素 261]
[8.2.14 载入<property>子元素 264]
[8.2.15 载入<list>子元素 266]
[8.2.16 分配注册策略 267]
[8.2.17 向容器注册 267]
[8.3 基于注解的IoC初始化 270]
[8.3.1 注解的前世今生 270]
[8.3.2 定位Bean扫描路径 271]
[8.3.3 读取注解的元数据 273]
[8.3.4 扫描指定包并解析为BeanDefinition 277]
[8.3.5 注册注解BeanDefinition 283]
[8.4 IoC容器初始化小结 285]
[9章 一步一步手绘Spring DI运行时序图 287]
[9.1 Spring自动装配之依赖注入 287]
[9.1.1 依赖注入发生的时间 287]
[9.1.2 寻找获取Bean的入口 288]
[9.1.3 开始实例化 293]
[9.1.4 选择Bean实例化策略 297]
[9.1.5 执行Bean实例化 299]
[9.1.6 准备依赖注入 301]
[9.1.7 解析属性依赖注入规则 306]
[9.1.8 注入赋值 310]
[9.2 Spring IoC容器中那些鲜为人知的细节 314]
[9.2.1 关于*加载 314]
[9.2.2 关于FactoryBean和BeanFactory 317]
[9.2.3 再述autowiring 322]
[10章 一步一步手绘Spring AOP运行时序图 326]
[10.1 Spring AOP初体验 326]
[10.1.1 再述Spring AOP应用场景 326]
[10.1.2 AOP中必须明白的几个概念 327]
[10.1.3 使用Spring AOP的两种方式 329]
[10.1.4 切入点表达式的配置规则 333]
[10.2 Spring AOP源码分析 334]
[10.2.1 寻找入口 334]
[10.2.2 选择代理策略 338]
[10.2.3 调用代理方法 341]
[10.2.4 触发通知 347]
[11章 一步一步手绘Spring MVC运行时序图 352]
[11.1 初探Spring MVC请求处理流程 352]
[11.2 Spring MVC九大组件 353]
11.2.1 HandlerMapping 353
11.2.2 HandlerAdapter 353
11.2.3 HandlerExceptionResolver 354
11.2.4 ViewResolver 354
11.2.5 RequestToViewNameTranslator 354
11.2.6 LocaleResolver 354
11.2.7 ThemeResolver 355
11.2.8 MultipartResolver 355
11.2.9 FlashMapManager 355
[11.3 Spring MVC源码分析 355]
[11.3.1 初始化阶段 356]
[11.3.2 运行调用阶段 359]
[11.4 Spring MVC优化建议 367]
[4篇 Spring手写实战]
[12章 环境准备 370]
[12.1 IDEA集成Lombok插件 370]
[12.1.1 安装插件 370]
[12.1.2 配置注解处理器 373]
[12.1.3 使用插件 374]
[12.2 从Servlet到ApplicationContext 375]
[12.3 准备基础配置376]
[12.3.1 application.properties配置.377]
[12.3.2 pom.xml配置 377]
[12.3.3 web.xml配置 378]
12.3.4 GPDispatcherServlet 378
[13章 IoC顶层结构设计 380]
[13.1 Annotation(自定义配置)模块 380]
13.1.1 @GPService 380
13.1.2 @GPAutowired 381
13.1.3 @GPController 381
13.1.4 @GPRequestMapping 382
13.1.5 @GPRequestParam 382
[13.2 core(顶层接口)模块 382]
13.2.1 GPFactoryBean 382
13.2.2 GPBeanFactory 383
[13.3 beans(配置封装)模块 383]
13.3.1 GPBeanDefinition 383
13.3.2 GPBeanWrapper 384
[13.4 context(IoC容器)模块 385]
13.4.1 GPAbstractApplicationContext 385
13.4.2 GPDefaultListableBeanFactory 385
13.4.3 GPApplicationContext385
13.4.4 GPBeanDefinitionReader 388
13.4.5 GPApplicationContextAware 391
[14章 完成DI模块的功能 392]
[14.1 从getBean()方法开始 393]
14.2 GPBeanPostProcessor 395
[15章 完成MVC模块的功能 396]
[15.1 MVC顶层设计 396]
15.1.1 GPDispatcherServlet 396
15.1.2 GPHandlerMapping 402
15.1.3 GPHandlerAdapter 403
15.1.4 GPModelAndView 406
15.1.5 GPViewResolver 406
15.1.6 GPView 407
[15.2 业务代码实现409]
15.2.1 IQueryService 409
15.2.2 QueryService 410
15.2.3 IModifyService 410
15.2.4 ModifyService 411
15.2.5 MyAction 412
15.2.6 PageAction 413
[15.3 定制模板页面414]
15.3.1 first.html 414
15.3.2 404.html 414
15.3.3 500.html 415
[15.4 运行效果演示415]
[16章 完成AOP代码织入 417]
[16.1 基础配置 .]





