8 (905) 200-03-37 Владивосток
с 09:00 до 19:00
CHN - 1.14 руб. Сайт - 21.13 руб.

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

Цена: 3 698руб.    (¥175)
Артикул: 624320558517

Вес товара: ~0.7 кг. Указан усредненный вес, который может отличаться от фактического. Не включен в цену, оплачивается при получении.

Этот товар на Таобао Описание товара
Продавец:中图天下图书专营
Адрес:Пекин
Рейтинг:
Всего отзывов:0
Положительных:0
Добавить в корзину
Другие товары этого продавца
¥ 99 541 142руб.
¥ 69.8 49.561 048руб.
¥44.5941руб.
¥541 142руб.

[基本信息.jpg]

[书名:设计模式就该这样学] 

[定价:118.00元]

[出版社: 电子工业出版社]

[ISBN:9787121392085]

[版次:1]

[定价:118]

[出版时间:2020-07-01]


[书名:] [SPRING5核心原理与30个类手写实战] 
[书号:] 9787121367410 
[定价:] 118.00 
[作者/编者:] [谭勇德] 
[出版社:] [电子工业出版社] 
[出版时间:] [2019年07月] 



[内容简介.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]

[书名:设计模式就该这样学] 

[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 基础配置 .]