
设计模式
设计模式部分的学习
慢慢慢时光
座右铭:think more, code more
联系邮箱:wjl31802@126.com
展开
-
设计模式之美笔记1
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录1. 为什么要学习设计模式2. 如何评价代码质量的高低1. 简单的描述词汇2. 最常用的评价标准1. 可维护性maintainability2. 可读性readability3. 可扩展性extensibility4. 灵活性 flexibility5. 简洁性 simplicity6. 可复用性reusability7. 可测试性testability3. 最重要的三条3. 面向对象、设计原则、设计模式、编程规范、重构五.原创 2020-07-26 09:26:53 · 513 阅读 · 0 评论 -
设计模式之美笔记2
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录实战案例:虚拟钱包1. 业务背景1. 充值2. 支付3. 提现4. 查询余额5. 查询交易流水2. 钱包系统的设计思路交易流水该如何记录和查询?是否应该在虚拟钱包系统的交易流水中记录充值、提现、支付这三种类型那用户查流水时,如何展示每条交易流水的交易类型3. 贫血模型MVC实现4. 充血模型的DDD开发模式实现5. 两个问题问题1问题2实战2:如何对接口鉴权这样一个功能开发做面向对象分析1. 案例介绍和难点分析2. 对案例.原创 2020-07-27 11:05:56 · 323 阅读 · 0 评论 -
设计模式之美笔记3
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录经典设计原则1. 单一职责原则SRP1. 概念2. 如何判断 是否足够单一3. 类的职责是否设计的越单一越好2. 开闭原则1. 概念2. 案例3. 修改代码意味着违反开闭原则吗4. 如何做到“对扩展开放、对修改 关闭”5. 如何在项目中灵活运用开闭原则3. 里式替换原则1. 概念2. 案例3. 哪些代码明显违反了LSP4. 接口隔离原则1. 概念2. 把接口理解为一组API接口集合3. 把接口理解为单个API接口或方法4..原创 2020-07-28 06:46:19 · 277 阅读 · 0 评论 -
设计模式之美笔记4
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录经典设计原则续1. 依赖反转原则1. 控制反转IOC2. 依赖注入DI3. 依赖注入框架DI Framework4. 依赖反转原则DIP2. KISS和YAGNI原则1. 如何理解KISS原则2. 代码行数越少越简单吗3. 代码逻辑复杂就违反KISS原则吗4. 如何写出满足KISS原则的代码5. YAGNI和KISS是一回事吗3. DRY原则1. 概念2. 实现逻辑重复3. 功能语义重复4. 代码执行重复5. 代码复用性c.原创 2020-07-29 16:47:00 · 338 阅读 · 0 评论 -
设计模式之美笔记5
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录实战1:如何做需求分析和设计1. 需求分析1. 积分赚取和兑换规则2. 积分消费和兑换规则3. 积分及明细查询2. 系统设计1. 合理的将功能划分为不同模块2. 设计模块和模块之间的交互关系3. 设计模块的接口、数据库、业务模型3. 代码实现1. 业务开发包括哪些工作2. 为什么分MVC三层开发3. BO、VO、Entity的意义实战2:非业务的通用框架开发的需求分析和设计1. 项目背景2. 需求分析1. 功能性需求分析2.原创 2020-08-01 11:02:24 · 376 阅读 · 0 评论 -
设计模式之美笔记6
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录重构1. 重构的目的:为什么要重构why1. 概念2. 为什么重构3. 重构的对象:到底重构什么what4. 重构的时机:什么时候重构when5. 重构的方法:如何重构how2. 保证重构不出错的落地手段1. 概念2. 为什么写单元测试3. 如何编写单元测试4. 单元测试为何难落地3. 代码的可测试性1. 编写可测试代码的案例2. 其他常见的anti-patterns4. 解耦1. 解耦为何如此重要2. 代码是否需要解耦3.原创 2020-08-02 18:55:45 · 381 阅读 · 0 评论 -
设计模式之美笔记7
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录实战1:id生成器的重构1. 需求背景2. 代码实现3. 如何发现代码质量问题4. 制定重构计划第一轮重构:提高代码的可读性第二轮重构:提高代码的可测试性第三轮重构:编写完善的单元测试第四轮重构:添加注释5. 异常的处理1. 方法出错应该返回什么2. 如何处理方法抛出的异常3. id生成器代码的出错处理4. 重构generate()方法5. 重构getLastFieldOfHostName()方法6. 重构getLastS.原创 2020-08-09 17:02:05 · 311 阅读 · 0 评论 -
设计模式之美笔记8
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录单例模式1. 为什么要使用单例2. 应用场景实战案例1:处理资源访问冲突实战案例2:表示全局唯一类3. 如何实现单例1. 饿汉式2. 懒汉式3. 双重检测4. 静态内部类5. 枚举4. 单例存在的问题1. 对OOP特性的支持不友好2. 单例会隐藏类之间的依赖关系3. 单例对代码的扩展性不友好4. 单例对代码的可测试性不友好5. 单例不支持有参构造函数5. 有什么替代解决方案6. 如何理解单例模式中的唯一性7. 如何实现线程.原创 2020-08-11 10:02:58 · 998 阅读 · 0 评论 -
设计模式之美笔记9
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录工厂模式1. 简单工厂2. 工厂方法factory method3. 什么时候用工厂方法,而非简单工厂模式呢4. 抽象工厂 abstract factory5. DI容器1. 工厂模式和DI容器的区别2. DI容器的核心功能有哪些3. 如何实现DI容器建造者模式1. 为什么要建造者模式2. 和工厂模式的区别原型模式1. 原型模式的原理和应用2.深拷贝和浅拷贝 工厂模式 工厂模式一般细分为三种类型:简单工厂、工厂方法和抽象工.原创 2020-08-16 15:03:45 · 213 阅读 · 0 评论 -
设计模式之美笔记10
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录序言代理模式桥接模式1. 原理解析2. 桥接模式的应用装饰器模式java IO类的奇怪用法基于继承的设计方案基于装饰器模式的设计方案适配器模式适配器模式应用场景1. 封装有缺陷的接口设计2. 统一多个类的接口设计3. 替换依赖的外部系统4. 兼容老版本接口5. 适配不同格式的数据适配器模式在java日志中的应用代理、桥接、装饰器、适配器的区别 序言 之前是创建型模式,主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创.原创 2020-08-17 10:16:32 · 239 阅读 · 0 评论 -
设计模式之美笔记11
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录门面模式门面模式的原理和实现门面模式的应用场景举例1. 解决易用性问题2. 解决性能问题3. 解决分布式事务问题享元模式原理享元模式在文本编辑器中的应用享元模式vs单例、缓存、对象池和单例的区别和缓存的去呗和对象池的区别享元模式在java Integer的应用享元模式在java String的应用组合模式组合模式的原理和实现组合模式的应用场景举例 门面模式 原理和实现都很简单,应用场景也很明确,主要是接口设计方面使用。 平.原创 2020-08-18 08:57:21 · 242 阅读 · 0 评论 -
设计模式之美笔记12
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录观察者模式原理及应用场景剖析基于不同应用场景的不同实现方式异步非阻塞观察者模式的简单实现EventBus框架功能需求guava EventBus的类和方法自己实现EventBus框架1. Subscribe2. ObserverAction3. ObserverRegistry4. EventBus5. AsyncEventBus模板模式模板模式的原理和实现模板模式作用1:复用1. java InputStream2. j.原创 2020-08-23 15:36:39 · 264 阅读 · 0 评论 -
设计模式之美笔记13
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录策略模式策略模式的原理和实现1. 策略的定义2. 策略的创建3. 策略的使用如何利用策略模式避免分支判断文件排序问题和解决思路代码实现和分析代码优化和重构责任链模式原理和实现第一种实现第二种实现责任链模式的应用场景servlet filterspring Interceptor 策略模式 实际项目开发中,策略模式较为常用,利用它避免冗长的if-else或者switch分支判断,还包括提供框架的扩展点等。 策略模式的原理和实.原创 2020-08-24 10:13:38 · 218 阅读 · 0 评论 -
设计模式之美笔记14
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录状态模式背景什么是有限状态机状态机实现方式1:分支逻辑法状态机实现方式2:查表法状态机实现方式3:状态模式迭代器模式迭代器模式的优势讨论实现支持快照功能的迭代器模式背景解决方案1解决方案2备忘录模式原理和实现如何优化内存和时间消耗 状态模式 背景 状态模式一般用来实现状态机,状态机常用在游戏、工作流引擎等系统开发中。状态机的实现方式有多种,除了状态机,常见的还有分支逻辑法和查表法。 什么是有限状态机 有限状态机,finit.原创 2020-08-25 09:56:37 · 224 阅读 · 0 评论 -
设计模式之美笔记15
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录访问者模式访问者模式的诞生再看访问者模式为什么支持双分派的语言不需要访问者模式除了访问者模式,还有其他实现方案没命令模式命令模式的原理解读实战讲解和策略模式的比较 访问者模式 较难理解,难实现,在实际的软件开发中很少被用到。 访问者模式的诞生 假设从网站上爬取了很多资源文件,格式有PDF、PPT、Word。现在开发一个工具处理这批资源文件,其中一个功能是,把资源文件的文本内容抽取出来放到TXT文件中。如何实现? 其中一种实.原创 2020-08-26 09:26:43 · 533 阅读 · 0 评论 -
设计模式之美笔记16
记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录解释器模式解释器模式的原理和实现解释器模式实战举例中介模式中介模式的原理和实现中介模式vs观察者模式 解释器模式 用来描述如何构建一个简单的“语言”解释器,更加小众,用在编译器、规则引擎、正则表达式中。 解释器模式的原理和实现 解释器模式,interpreter design pattern,定义:interpreter pattern is used to define a gramatical representati.原创 2020-08-26 19:53:21 · 261 阅读 · 0 评论