加载中
花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘

本文所有内容均节选自《设计模式就该这样学》 序言 Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由Erich Gamma、Richard Helm、Ralph J...

雇工模式(Employee Pattern)

本文节选自《设计模式就该这样学》 1 雇工模式的定义 雇工模式(Employee Pattern)也叫作仆人模式(Servant Pattern),属于行为型设计模式,它为一组类提供通用的功能,而不需要类实现这些...

空对象模式(Null Object Pattern)

本文节选自《设计模式就该这样学》 1 空对象模式的定义 空对象模式(Null Object Pattern)不属于GoF设计模式,但是它作为一种经常出现的模式足以被视为设计模式了。其具体定义为设计一个空...

规格模式(Specification Pattern)

本文节选自《设计模式就该这样学》 1 规格模式的定义 规格模式(Specification Pattern)可以认为是组合模式的一种扩展。很多时候程序中的某些条件决定了业务逻辑,这些条件就可以抽离出来以...

对象池模式(Object Pool Pattern)

本文节选自《设计模式就该这样学》 1 对象池模式的定义 对象池模式(Object Pool Pattern),是创建型设计模式的一种,将对象预先创建并初始化后放入对象池中,对象提供者就能利用已有的对象...

彻底搞懂访问者模式的静态、动态和伪动态分派

本文节选自《设计模式就该这样学》 1 使用访问者模式实现KPI考核的场景 每到年底,管理层就要开始评定员工一年的工作绩效,员工分为工程师和经理;管理层有CEO和CTO。那么CTO关注工程师的代...

2021/11/26 16:05
2.5K
彻底搞懂Spring状态机原理,实现订单与物流解耦

本文节选自《设计模式就该这样学》 1 状态模式的UML类图 状态模式的UML类图如下图所示。 2 使用状态模式实现登录状态自由切换 当我们在社区阅读文章时,如果觉得文章写得很好,我们就会评论...

2021/11/16 13:46
2.5K
手写自定义迭代器,秒懂迭代器底层原理

本文节选自《设计模式就该这样学》 迭代器模式的UML类图如下图所示。 1 手写自定义的集合迭代器 总体来说,迭代器模式是非常简单的。还是以网络课程为例,我们创建一个课程集合,集合中的每...

意外发现,原来你不知道自己每天都在用门面模式

1 使用门面模式整合已知API的功能 一般的电商平台都是整合众多的子系统聚合到一起形成一个大型的购物平台,一般情况下,有很多现成的功能都不是重新开发的,而是要去对接已有的各个子系统,这...

2021/11/13 13:28
616
万字长文手写数据库连接池,让抽象工厂不再抽象

本文节选自《设计模式就该这样学》 1 关于产品等级结构和产品族 在讲解抽象工厂之前,我们要了解两个概念:产品等级结构和产品族,如下图所示。 上图中有正方形、圆形和菱形3种图形,相同颜色...

全面通透深入剖析工厂方法模式

本文节选自《设计模式就该这样学》 1 工厂方法模式的应用场景 工厂方法模式主要适用于以下应用场景。 (1)创建对象需要大量重复的代码。 (2)客户端(应用层)不依赖产品类实例如何被创建、...

彻底说透简单工厂那些你没有关注过的细节

本文节选自《设计模式就该这样学》 1 使用简单工厂模式封装产品创建细节 接下来看代码,还是以创建一门网络课程为例。假设有Java架构、大数据、人工智能等课程,已经形成了一个生态。我们可以...

你以为委派模式很神秘,其实你每天都在用

本文节选自《设计模式就该这样学》 1 使用委派模式模拟任务分配场景 我们用代码来模拟老板给员工分配任务的业务场景。 首先创建IEmployee员工接口。 public interface IEmployee { void do...

使用桥接模式设计复杂的消息系统

本文节选自《设计模式就该这样学》 举个例子,我们在平时办公的时候经常通过邮件消息、短信消息或者系统内消息与同事进行沟通。尤其在走一些审批流程的时候,我们需要记录这些过程以备查。根...

搞懂钩子方法和模板方法,看完这篇就够了

本文节选自《设计模式就该这样学》 通常的模板方法模式中会设计一个abstract的抽象方法,交给它的子类实现,这个方法称为模板方法。而钩子方法,是对于抽象方法或者接口中定义的方法的一个空...

2021/11/07 17:48
501
使用策略模式重构电商折扣和支付场景

本文节选自《设计模式就该这样学》 1 使用策略模式实现促销优惠方案选择 大家都知道,咕泡学院的架构师课程经常会有优惠活动,优惠策略有很多种可能,如领取优惠券抵扣、返现促销、拼团优惠...

2021/11/05 14:31
761
没有性能瓶颈的无限级菜单树应该这样设计

本文节选自《设计模式就该这样学》 1 使用透明组合模式实现课程目录结构 以一门网络课程为例,我们设计一个课程的关系结构。比如,我们有Java入门课程、人工智能课程、Java设计模式、源码分析...

如何快速搞定第三方登录且易扩展?

本文节选自《设计模式就该这样学》 1 使用类适配器重构第三方登录自由适配 我们使用适配模式来实现一个实际的业务场景,解决实际问题。年纪稍微大一点的小伙伴一定经历过这样的过程。很早以前...

一文读懂深克隆与浅克隆的关系

本文节选自《设计模式就该这样学》 1 分析JDK浅克隆API带来的问题 在Java提供的API中,不需要手动创建抽象原型接口,因为Java已经内置了Cloneable抽象原型接口,自定义的类型只需实现该接口并...

就因为把int改成Integer,第2天被辞了

本文节选自《设计模式就该这样学》之享元模式(Flyweight Pattern) 1 故事背景 一个程序员就因为改了生产环境上的一个方法参数,把int型改成了Integer类型,因为涉及到钱,结果上线之后公司...

2021/11/01 23:22
3.9K

没有更多内容

加载失败,请刷新页面

返回顶部
顶部