Spring5-核心原理-学习 各种设计模式之间的比对
内容都是从Tom老师的书中摘抄,记录下来方便自己学习。
分类 | 设计模式 |
---|---|
创建型 | 工厂方法模式、抽象工厂模式、建造者模式、原型模型、单例模型 |
结构型 | 适配器模型、桥接模型、组合模型、装饰者模型、门面模型、享元模型、代理模型 |
创建型 | 解释器模式、模板方法模式、责任链模式、命令模式、迭代器模式、调节者模式、备忘录模式、观察者模式、状态模式、策略模式、访问者模式 |
1、装饰者模式和适配器模式比对
两者都是包装模式,装饰者模式也是一种特殊的代理模式,两者比对如下表:
2、设计模式之间的关联关系
-
单例模式和工厂模式:在实际业务中,通常会把工厂类设计为单例模式
-
策略模式和工厂模式:
(1)工厂模式保护工厂方法模式和抽象工厂模式,是创建型;策略模式属于行为型模式;
(2) 工厂模式的主要目的是封装好创建逻辑,策略模式接收工厂创建好的对象,从而实现不同的行为。 -
策略模式和委派模式
(1)策略模式是委派模式内部的一种实现方式,策略模式关注结果是否能相互替换;
(2) 委派模式更关注分发和调度的过程。 -
模板方法模式和工厂方法模式
工厂方法模式是模板方法模式的一种特殊实现。 -
模板方法模式和策略模式
(1)模板方法模式和策略模式都有封装算法;
(2) 策略模式使不同算法可以相互替换,且不影响客户端应用层的使用;
(3)模板方法模式针对定义一个算法的流程,将一些有细微差异的部分交给子类实现;
(4)模板方法模式不能改变算法流程,策略模式可以改变算法流程且可替换。策略模式通常用来代理if…else等条件分支语句。 -
装饰者模式和代理模式
(1) 装饰者模式的关注点在于给对象动态的添加方法,而代理模式更加注重控制对象的访问;
(2) 代理模式通常会在代理类中创建被代理对象的实例,而装饰者模式通常会把被装饰者作为构造参数。 -
装饰者模式和适配器模式
(1)装饰者模式和适配器模式都属于包装器模式;
(2)装饰者模式可以实现与被装饰者相同的接口,或者继承被装饰者作为它的子类,而适配器和被适配者可以实现不同的接口。 -
适配器模式和静态代理模式
适配器模式可以结合静态代理模式来实现,保存被适配对象的引用,但不是唯一的实现方式。 -
适配器模式和策略模式
在业务复杂的情况下,可利用策略模式优化适配器模式。
Spring 常用的设计模式:
设计模式 | 一句话归纳 | 举例 |
---|---|---|
工厂模式 | 只对结果负责,封装创建过程 | BeanFactory、Calender |
单例模式 | 保证独一无二 | ApplicationContext、Calender |
原型模式 | ArrayList、PrototyBean | |
代理模式 | ProxyFactoryBean、JdkDynamicAopProxy、CglibAopProxy | |
委派模式 | DispatcherServlet、BeanDefinitionPaserDelegate | |
策略模式 | 用户选择、结果统一 | InstantiationStrategy |
模板模式 | 流程标准化,自己实现定制 | JdbcTemplate、HttpServlet |
适配器模式 | 兼容转换头 | AdvisorAdapter、HandlerAdapter |
装饰者模式 | 包装,同宗同源 | BufferedReader、InputStream、OutputStream、HttpHeadResponseDecorator |
观察者模式 | 在任务完成时通知 | ContextLoaderListener |
- 点赞
- 收藏
- 分享
- 文章举报
- GOF设计模式学习笔记 --辨析各种模式的要点和相似模式之间的区别
- GOF设计模式学习笔记 --辨析各种模式的要点和相似模式之间的区别
- GOF设计模式学习--辨析各种模式的要点和相似模式之间的区别
- 设计模式-观察者模式,在各种对象之间划分清晰的界限
- php核心学习-设计模式的学习-简单工厂模式
- 各种设计模式的定义(设计模式学习笔记)
- 学习笔记3:《大型网站技术架构 核心原理与案例分析》之 大型网站架构模式
- php核心学习-设计模式的学习-委托模式
- 各种设计模式学习的想法
- php核心学习-设计模式的学习-注册树模式
- 各种设计模式之间的关系和UML类图
- 游戏核心算法编程内幕学习(三):设计模式
- C#设计模式学习与工作之间的困惑
- java 各种设计模式学习
- php核心学习-设计模式的学习-观察者模式
- php核心学习-设计模式的学习-责任链模式
- 学习重点:1、金典的设计模式在实际中应用2、JVM原理3、jui源代码
- 统计学习方法+Python机器学习实践指南+强化学习精要:核心算法与Tensorflow实现+图解深度学习与神经网络从张量到TensorF实现+人工神经网络理论设计及应用+深度卷积网络:原理与实践
- java核心基础学习笔记-------设计模式之单例设计模式
- 设计模式学习笔记(五)——FactoryMethod工厂模式