大约 8 分钟
- JAVA58
- 面试50
- SPRINGBOOT29
- SPRING25
- K8S23
- DESIGN PATTERN14
- 设计模式14
- REACT10
- 前端10
- SPARK10
- 大数据8
- DOCKER7
- 分布式7
- DDD6
- 架构设计6
- MYBATIS5
- KAFKA4
- SPRINGMVC4
- MYSQL4
- LINUX3
- FLINK3
- ORM3
- REDIS3
- MAVEN2
- MVC2
- 云原生2
- project2
- ALGORITHM2
- PROBLEM2
- JVM2
- Spring1
- SpringFrameWork1
- ABOUT1
- 算法1
- HBASE1
- DRUID1
- 缓存1
大约 8 分钟
大约 11 分钟
大约 9 分钟
大约 9 分钟
大约 9 分钟
大约 10 分钟
大约 12 分钟
大约 14 分钟
设计模式使用归纳
设计模式 | 类型 | 目的 | 使用经验 | 框架源码使用案例 | |
---|---|---|---|---|---|
模板模式 | 行为型 | 流程全部标准化,需要微调请覆盖,核心定义业务流程,达到逻辑复用的目的 | 多用来定义业务过程,抽象类中定义业务流程,子类实现具体差异化功能 | JdbcTemplate、HttpServlet | |
策略模式 | 行为模式 | 定义一族算法策略,客户端可以灵活决定使用哪一个算法 | 消除if-else判断 | Comparator、 InstantiationStrategy |
|
观察者模式 | 行为模式 | 定义了一种注册通知机制,解耦观察者和被观察者,当观察者关注的内容发生变化,系统会主动通知每一个观察者 | 基于监听模式的消费消费 | ContextLoaderListener | |
责任链模式 | 行为模式 | 定义一个链式处理规则,解耦处理逻辑 | 对不同的业务状态定义不同的处理策略,解耦状态之间的逻辑 | FilterChain、Pipeline | |
状态模式 | 行为模式 | 当控制一个对象状态转换的条件表达式过于复杂时,把相关“判断逻辑”提取出来,放到一系列的状态类当中,这样可以把原来复杂的逻辑判断简单化。 | 状态驱动行为,行为决定状态,将状态和行为进行绑定 | Lifecycle | |
适配器模式 | 结构性模式 | 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作 | 三种实现方式,类,对象,接口适配器,让原本不兼容的系统兼容 | ||
代理模式 | 结构性模式 | ProxyFactoryBean、 JdkDynamicAopProxy、CglibAopProxy |
|||
装饰器模式 | 结构性模式 | 指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式 | 核心是抽象装饰器持有抽象构件接口的引用,通过接口实现具体业务调用逻辑 | BufferedReader、InputStream | |
外观模式 | 结构性模式 | 外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节 | 核心是在门面类中注入一个被委托对象的引用,在门面类中实现对子系统的调用 | JdbcUtils、RequestFacade | |
桥接模式 | 结构性模式 | 将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 | 核心是抽象化角色持有接口对象的引用 | DriverManager | |
建造者设计模式 | 创建型 | StringBuilder、 BeanDefinitionBuilder | |||
工厂模式 | 创建型 | LoggerFactory、Calender | |||
单例模式 | 创建型 | BeanFactory、Runtime | |||
原型模式 | 创建型 | ArrayList、PrototypeBean | |||
大约 4 分钟