展开全部

主编推荐语

本书是一本基于互联网真实案例编写的Java设计模式实践图书。

内容简介

全书以解决方案为核心,从实际开发业务中抽离出交易、营销、规则引擎、中间件、框架源码等22个真实场景,对设计模式进行全面、彻底的分析。帮助读者灵活地使用各种设计模式,从容应对复杂变化的业务需求,编写出易维护、可扩展的代码结构。

本书融合了生动有趣的动画插图和实践开发的类结构图,让读者不仅能体会设计模式的概念和原理,更能清楚地知晓落地方法。

此外,本书还介绍了DDD四层架构、RPC中间件设计、分布式领域驱动设计和设计模式的结合使用等内容。

本书适合计算机相关行业的研发人员、高等院校计算机专业的学生阅读。无论是初学者,还是中、高级研发人员都能从本书中有所获益。

目录

  • 版权信息
  • 内容简介
  • 推荐语
  • 前言
  • 第1章 设计模式介绍
  • 1.1 设计模式是什么
  • 1.2 谁发明了设计模式
  • 1.3 设计模式有哪些种类
  • 1.4 该如何学习设计模式
  • 第2章 六大设计原则
  • 2.1 单一职责原则
  • 2.1.1 单一职责原则定义
  • 2.1.2 模拟场景
  • 2.1.3 违背原则方案
  • 2.1.4 单一职责原则改善代码
  • 2.2 开闭原则
  • 2.2.1 开闭原则定义
  • 2.2.2 模拟场景
  • 2.2.3 违背原则方案
  • 2.2.4 开闭原则改善代码
  • 2.3 里氏替换原则
  • 2.3.1 里氏替换原则定义
  • 2.3.2 模拟场景
  • 2.3.3 违背原则方案
  • 2.3.4 里氏替换原则改善代码
  • 2.4 迪米特法则原则
  • 2.4.1 迪米特法则定义
  • 2.4.2 模拟场景
  • 2.4.3 违背原则方案
  • 2.4.4 迪米特法则改善代码
  • 2.5 接口隔离原则
  • 2.5.1 接口隔离原则定义
  • 2.5.2 模拟场景
  • 2.5.3 违背原则方案
  • 2.5.4 接口隔离原则改善代码
  • 2.6 依赖倒置原则
  • 2.6.1 依赖倒置原则定义
  • 2.6.2 模拟场景
  • 2.6.3 违背原则方案
  • 2.6.4 依赖倒置原则改善代码
  • 第3章 设计模式如何落地
  • 3.1 设计模式该怎样学
  • 3.2 为什么使用设计模式
  • 3.3 设计模式的落地经验
  • 第4章 工厂模式
  • 4.1 码农心得
  • 4.2 工厂模式介绍
  • 4.3 模拟发放多种奖品
  • 4.4 违背设计模式实现
  • 4.4.1 工程结构
  • 4.4.2 if…else实现需求
  • 4.4.3 测试验证
  • 4.5 工厂模式重构代码
  • 4.5.1 工程结构
  • 4.5.2 定义发奖接口
  • 4.5.3 实现三种发奖接口
  • 4.5.4 创建商店工厂
  • 4.5.5 测试验证
  • 4.6 本章总结
  • 第5章 抽象工厂模式
  • 5.1 码农心得
  • 5.2 抽象工厂模式介绍
  • 5.3 缓存集群升级场景
  • 5.3.1 场景模拟工程
  • 5.3.2 Redis单机服务RedisUtils
  • 5.3.3 Redis集群服务EGM
  • 5.3.4 Redis集群服务IIR
  • 5.3.5 模拟早期单体Redis使用
  • 5.4 违背设计模式实现
  • 5.4.1 工程结构
  • 5.4.2 if…else实现需求
  • 5.4.3 测试验证
  • 5.5 抽象工厂模式重构代码
  • 5.5.1 工程结构
  • 5.5.2 定义集群适配器接口
  • 5.5.3 实现集群适配器接口
  • 5.5.4 代理方式的抽象工厂类
  • 5.5.5 测试验证
  • 5.6 本章总结
  • 第6章 建造者模式
  • 6.1 码农心得
  • 6.2 建造者模式介绍
  • 6.3 装修套餐选配场景
  • 6.3.1 场景模拟工程
  • 6.3.2 装修材料接口
  • 6.3.3 吊顶材料(ceiling)
  • 6.3.4 涂料材料(coat)
  • 6.3.5 地板材料(floor)
  • 6.3.6 地砖材料(tile)
  • 6.4 违背设计模式实现
  • 6.4.1 工程结构
  • 6.4.2 if…else实现需求
  • 6.4.3 测试验证
  • 6.5 建造者模式重构代码
  • 6.5.1 工程结构
  • 6.5.2 定义装修包接口
  • 6.5.3 实现装修包接口
  • 6.5.4 建造者类创建
  • 6.5.5 测试验证
  • 6.6 本章总结
  • 第7章 原型模式
  • 7.1 码农心得
  • 7.2 原型模式介绍
  • 7.3 试卷题目乱序场景
  • 7.3.1 场景模拟工程
  • 7.3.2 选择题类
  • 7.3.3 问答题类
  • 7.4 违背设计模式实现
  • 7.4.1 工程结构
  • 7.4.2 所有需求都写到一个类里
  • 7.4.3 测试验证
  • 7.5 原型模式重构代码
  • 7.5.1 工程结构
  • 7.5.2 题目混排工具包
  • 7.5.3 题库复制对象类
  • 7.5.4 初始化试卷数据
  • 7.5.5 测试验证
  • 7.6 本章总结
  • 第8章 单例模式
  • 8.1 码农心得
  • 8.2 单例模式介绍
  • 8.3 案例场景介绍
  • 8.4 七种单例模式实现方式
  • 8.4.1 静态类使用
  • 8.4.2 懒汉模式(线程不安全)
  • 8.4.3 懒汉模式(线程安全)
  • 8.4.4 饿汉模式(线程安全)
  • 8.4.5 使用类的内部类(线程安全)
  • 8.4.6 双重锁校验(线程安全)
  • 8.4.7 CAS“AtomicReference”(线程安全)
  • 8.4.8 Effective Java作者推荐的枚举单例(线程安全)
  • 8.5 本章总结
  • 第9章 适配器模式
  • 9.1 码农心得
  • 9.2 适配器模式介绍
  • 9.3 MQ消息体兼容场景
  • 9.3.1 场景模拟工程
  • 9.3.2 注册开户MQ
  • 9.3.3 内部订单MQ
  • 9.3.4 第三方订单MQ
  • 9.3.5 查询用户内部下单数量接口
  • 9.3.6 查询用户第三方下单首单接口
  • 9.4 违背设计模式实现
  • 9.4.1 工程结构
  • 9.4.2 MQ接收消息实现
  • 9.5 适配器模式重构代码
  • 9.5.1 工程结构
  • 9.5.2 MQ适配
  • 9.5.3 MQ消息适配测试验证
  • 9.5.4 接口适配需求阐述
  • 9.5.5 定义统一适配接口
  • 9.5.6 分别实现两个不同的接口
  • 9.5.7 接口适配验证
  • 9.6 本章总结
  • 第10章 桥接模式
  • 10.1 码农心得
  • 10.2 桥接模式介绍
  • 10.3 多支付和多模式组合场景
  • 10.4 违背设计模式实现
  • 10.4.1 工程结构
  • 10.4.2 代码实现
  • 10.4.3 测试验证
  • 10.5 桥接模式重构代码
  • 10.5.1 工程结构
  • 10.5.2 支付类型桥接抽象类
  • 10.5.3 两种支付类型的实现
  • 10.5.4 定义支付模式接口
  • 10.5.5 三种支付模式风控(人脸、指纹和密码)
  • 10.5.6 测试验证
  • 10.6 本章总结
  • 第11章 组合模式
  • 11.1 码农心得
  • 11.2 组合模式介绍
  • 11.3 决策树场景模拟
  • 11.4 违背设计模式实现
  • 11.4.1 工程结构
  • 11.4.2 代码实现
  • 11.4.3 测试验证
  • 11.5 组合模式重构代码
  • 11.5.1 工程结构
  • 11.5.2 决策树对象类
  • 11.5.3 树节点逻辑过滤器接口
  • 11.5.4 决策抽象类提供基础服务
  • 11.5.5 树节点逻辑实现类
  • 11.5.6 决策引擎接口定义
  • 11.5.7 决策节点配置
  • 11.5.8 基础决策引擎功能
  • 11.5.9 决策引擎的实现
  • 11.5.10 初始化决策树数据
  • 11.5.11 测试验证
  • 11.6 本章总结
  • 第12章 装饰器模式
  • 12.1 码农心得
  • 12.2 装饰器模式介绍
  • 12.3 单点登录场景模拟
  • 12.3.1 工程结构
  • 12.3.2 模拟Spring的HandlerInterceptor
  • 12.3.3 模拟单点登录功能
  • 12.4 违背设计模式实现
  • 12.4.1 工程结构
  • 12.4.2 代码实现
  • 12.4.3 测试验证
  • 12.5 装饰器模式重构代码
  • 12.5.1 工程结构
  • 12.5.2 抽象类装饰角色
  • 12.5.3 装饰角色逻辑实现
  • 12.5.4 测试验证
  • 12.6 本章总结
  • 第13章 外观模式
  • 13.1 码农心得
  • 13.2 外观模式介绍
  • 13.3 中间件场景模拟
  • 13.3.1 场景模拟工程
  • 13.3.2 定义基础查询接口
  • 13.3.3 设置Application启动类
  • 13.4 违背设计模式实现
  • 13.4.1 工程结构
  • 13.4.2 代码实现
  • 13.5 外观模式重构代码
  • 13.5.1 工程结构
  • 13.5.2 配置服务类
  • 13.5.3 配置类注解定义
  • 13.5.4 获取自定义配置类信息
  • 13.5.5 切面注解定义
  • 13.5.6 白名单切面逻辑
  • 13.6 重构后工程验证
  • 13.6.1 引入中间件POM配置
  • 13.6.2 配置application.yml
  • 13.6.3 在Controller中添加自定义注解
  • 13.6.4 启动SpringBoot
  • 13.6.5 访问接口测试
  • 13.7 本章总结
  • 第14章 享元模式
  • 14.1 码农心得
  • 14.2 享元模式介绍
  • 14.3 缓存优化查询场景
  • 14.4 违背设计模式实现
  • 14.4.1 工程结构
  • 14.4.2 代码实现
  • 14.5 享元模式重构代码
  • 14.5.1 工程结构
  • 14.5.2 商品活动信息类
  • 14.5.3 商品活动库存信息类
  • 14.5.4 享元工厂
  • 14.5.5 模拟Redis服务
  • 14.5.6 活动控制类
  • 14.5.7 测试验证
  • 14.6 本章总结
  • 第15章 代理模式
  • 15.1 码农心得
  • 15.2 代理模式介绍
  • 15.3 MyBatis-Spring中代理类场景
  • 15.4 代理类模式实现过程
  • 15.4.1 工程结构
  • 15.4.2 自定义注解
  • 15.4.3 Dao层接口
  • 15.4.4 代理类定义
  • 15.4.5 将Bean定义注册到Spring容器
  • 15.4.6 配置文件spring-config
  • 15.4.7 测试验证
  • 15.5 本章总结
  • 第16章 责任链模式
  • 16.1 码农心得
  • 16.2 责任链模式介绍
  • 16.3 系统上线审批场景
  • 16.3.1 场景模拟工程
  • 16.3.2 模拟审批服务
  • 16.4 违背设计模式实现
  • 16.4.1 工程结构
  • 16.4.2 代码实现
  • 16.4.3 测试验证
  • 16.5 责任链模式重构代码
  • 16.5.1 工程结构
  • 16.5.2 责任链中返回对象定义
  • 16.5.3 链路抽象类定义
  • 16.5.4 三个审批实现类
  • 16.5.5 测试验证
  • 16.6 本章总结
  • 第17章 命令模式
  • 17.1 码农心得
  • 17.2 命令模式介绍
  • 17.3 餐厅点餐场景
  • 17.4 违背设计模式实现
  • 17.4.1 工程结构
  • 17.4.2 代码实现
  • 17.5 命令模式重构代码
  • 17.5.1 工程结构
  • 17.5.2 抽象命令定义(菜品接口)
  • 17.5.3 具体命令实现(四种菜品)
  • 17.5.4 抽象实现者定义(厨师接口)
  • 17.5.5 实现者具体实现(四种厨师)
  • 17.5.6 调用者(店小二)
  • 17.5.7 测试验证
  • 17.6 本章总结
  • 第18章 迭代器模式
  • 18.1 码农心得
  • 18.2 迭代器模式介绍
  • 18.3 组织架构树形结构遍历场景
  • 18.4 迭代器模式遍历组织结构
  • 18.4.1 工程结构
  • 18.4.2 雇员实体类
  • 18.4.3 树节点链路
  • 18.4.4 迭代器定义
  • 18.4.5 可迭代接口定义
  • 18.4.6 集合功能接口定义
  • 18.4.7 迭代器功能实现
  • 18.4.8 测试验证
  • 18.5 本章总结
  • 第19章 中介者模式
  • 19.1 码农心得
  • 19.2 中介者模式介绍
  • 19.3 手写ORM中间件场景
  • 19.4 违背设计模式实现
  • 19.4.1 工程结构
  • 19.4.2 代码实现
  • 19.4.3 测试结果
  • 19.5 中介者模式开发ORM框架
  • 19.5.1 工程结构
  • 19.5.2 定义SqlSession接口
  • 19.5.3 SqlSession具体实现类
  • 19.5.4 定义SqlSessionFactory接口
  • 19.5.5 SqlSessionFactory具体实现类
  • 19.5.6 SqlSessionFactoryBuilder实现
  • 19.6 ORM框架测试
  • 19.6.1 初始化测试库表数据
  • 19.6.2 创建数据库对象类
  • 19.6.3 创建Dao包
  • 19.6.4 ORM配置文件
  • 19.6.5 单条数据查询测试验证
  • 19.6.6 集合数据查询测试验证
  • 19.7 本章总结
  • 第20章 备忘录模式
  • 20.1 码农心得
  • 20.2 备忘录模式介绍
  • 20.3 系统上线配置回滚场景
  • 20.4 备忘录模式记录系统配置
  • 20.4.1 工程结构
  • 20.4.2 配置信息类
  • 20.4.3 备忘录类
  • 20.4.4 记录者类
  • 20.4.5 管理员类
  • 20.4.6 测试验证
  • 20.5 本章总结
  • 第21章 观察者模式
  • 21.1 码农心得
  • 21.2 观察者模式介绍
  • 21.3 小客车摇号通知场景
  • 21.3.1 场景模拟工程
  • 21.3.2 摇号服务接口
  • 21.4 违背设计模式实现
  • 21.4.1 工程结构
  • 21.4.2 代码实现
  • 21.4.3 测试验证
  • 21.5 观察者模式重构代码
  • 21.5.1 工程结构
  • 21.5.2 监听事件接口定义
  • 21.5.3 两个监听事件的实现
  • 21.5.4 事件处理类
  • 21.5.5 业务抽象类接口
  • 21.5.6 业务接口实现类
  • 21.5.7 测试验证
  • 21.6 本章总结
  • 第22章 状态模式
  • 22.1 码农心得
  • 22.2 状态模式介绍
  • 22.3 活动审批状态流转场景
  • 22.3.1 场景模拟工程
  • 22.3.2 基本活动信息
  • 22.3.3 活动枚举状态
  • 22.3.4 活动服务接口
  • 22.4 违背设计模式实现
  • 22.4.1 工程结构
  • 22.4.2 代码实现
  • 22.4.3 测试验证
  • 22.5 状态模式重构代码
  • 22.5.1 工程结构
  • 22.5.2 定义状态抽象类
  • 22.5.3 部分状态流转实现
  • 22.5.4 状态处理服务
  • 22.5.5 编辑中到提审活动测试验证
  • 22.5.6 编辑中到开启活动测试验证
  • 22.5.5 审批拒绝到活动中测试验证
  • 22.5.6 审核拒绝到撤审测试验证
  • 22.6 本章总结
  • 第23章 策略模式
  • 23.1 码农心得
  • 23.2 策略模式介绍
  • 23.3 各类营销优惠券场景
  • 23.4 违背设计模式实现
  • 23.4.1 工程结构
  • 23.4.2 代码实现
  • 23.5 策略模式重构代码
  • 23.5.1 工程结构
  • 23.5.2 优惠券接口
  • 23.5.3 优惠券接口实现
  • 23.5.4 编写测试类(直减优惠)
  • 23.5.5 编写测试类(满减优惠)
  • 23.5.6 编写测试类(折扣优惠)
  • 23.5.7 编写测试类(N元购优惠)
  • 23.6 本章总结
  • 第24章 模板模式
  • 24.1 码农心得
  • 24.2 模板模式介绍
  • 24.3 模拟爬虫商品生成海报信息场景
  • 24.4 模板模式案例工程
  • 24.4.1 工程结构
  • 24.4.2 定义执行顺序的抽象类
  • 24.4.3 模拟爬取京东商城商品
  • 24.4.4 模拟爬取淘宝商品
  • 24.4.5 模拟爬取当当商品
  • 24.4.6 测试验证
  • 24.5 本章总结
  • 第25章 访问者模式
  • 25.1 码农心得
  • 25.2 访问者模式介绍
  • 25.3 不同用户对学生身份访问视角场景
  • 25.4 访问者模式案例工程
  • 25.4.1 工程结构
  • 25.4.2 定义用户抽象类
  • 25.4.3 实现用户信息
  • 25.4.4 定义访问数据接口
  • 25.4.5 实现访问类型
  • 25.4.6 数据看板
  • 25.4.7 测试验证
  • 25.5 本章总结
  • 第26章 DDD四层架构实践
  • 26.1 领域驱动设计介绍
  • 26.1.1 开发目标
  • 26.1.2 服务架构
  • 26.1.3 应用经验
  • 26.2 商品下单规则场景
  • 26.3 规则树DDD四层架构
  • 26.3.1 工程结构
  • 26.3.2 application(应用层)
  • 26.3.3 domain(领域层)
  • 26.3.4 infrastructure(基础层)
  • 26.3.5 interfaces(接口层)
  • 26.4 测试验证
  • 26.4.1 初始化规则树数据和启动SpringBoot
  • 26.4.2 查询规则树信息
  • 26.4.2 规则树行为信息决策
  • 26.5 本章总结
  • 第27章 RPC中间件设计开发
  • 27.1 RPC介绍
  • 27.1.1 为什么要有RPC
  • 27.1.2 主流的RPC框架
  • 27.1.3 实现RPC需要的技术
  • 27.2 案例目标
  • 27.3 Spring自定义配置文件
  • 27.3.1 实现介绍
  • 27.3.2 工程结构
  • 27.3.3 生产者配置
  • 27.3.4 消费者配置
  • 27.3.5 注册中心配置
  • 27.3.6 命名空间处理器
  • 27.3.7 XSD资源文件配置
  • 27.3.8 测试验证
  • 27.4 Netty通信组件
  • 27.4.1 实现介绍
  • 27.4.2 工程结构
  • 27.4.3 编码器类实现
  • 27.4.4 解码器类实现
  • 27.4.5 通信客户端实现
  • 27.4.6 通信服务端实现
  • 27.4.7 同步通信工具包
  • 27.4.8 测试验证
  • 27.5 RPC功能逻辑实现
  • 27.5.1 RPC组件整体工程结构
  • 27.5.2 RPC注册中心Redis版
  • 27.5.3 Spring注册中心配置启动Redis和Netty
  • 27.5.4 接口生产者注册接口
  • 27.5.5 接口消费者选取接口
  • 27.5.6 Socket服务端通信
  • 27.6 RPC框架验证
  • 27.6.1 启动Redis 注册中心
  • 27.6.2 定义RPC接口
  • 27.6.3 RPC接口提供者
  • 27.6.4 RPC接口消费者
  • 27.6.5 测试验证
  • 27.7 本章总结
  • 第28章 分布式领域驱动架构设计
  • 28.1 关于需求
  • 28.2 实践场景
  • 28.3 架构设计
  • 28.4 父类工程
  • 28.4.1 工程结构
  • 28.4.2 POM文件定义
  • 28.4.3 错误码定义
  • 28.5 分布式框架
  • 28.5.1 application(应用层)
  • 28.5.2 domain(领域层)
  • 28.5.3 infrastructure(基础层)
  • 28.5.4 interfaces(接口层)
  • 28.5.5 RPC对外提供服务层
  • 28.5.6 父类POM使用
  • 28.5.7 Dubbo配置信息
  • 28.5.8 数据库表初始化
  • 28.5.9 RPC测试工程
  • 28.5.10 测试验证
  • 28.6 本章总结
展开全部

评分及书评

2.0
3个评分
  • 用户头像
    给这本书评了
    2.0
    案例有点深奥

    案例太专业,对于新手不友好。

      转发
      评论

    出版方

    电子工业出版社

    电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。