您的位置:首页 > 编程语言 > Java开发

Spring5-核心原理-学习 各种设计模式之间的比对

2020-04-20 15:05 316 查看

内容都是从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
  • 点赞
  • 收藏
  • 分享
  • 文章举报
guoge1982 发布了10 篇原创文章 · 获赞 1 · 访问量 211 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: