Java设计模式精讲—课程笔记10(第25章 责任链模式 + 第26章 访问者模式 + 第27章 状态模式 + 第28章 课程总结)

25 责任链模式讲解+Coding+源码解析

25.1 责任链模式讲解

  1. 为请求创建一个接收此次请求对象的链;
    类型:行为型;
  2. 适用场景:
    一个请求的处理需要多个对象当中的一个或几个协作处理;
  3. 优点:
    请求的发送者和接收者(请求的处理)解耦;
    责任链可以动态组合;
  4. 缺点:
    责任链太长或者处理时间过长,影响性能;
    责任链有可能过多;
  5. 相关设计模式:
    责任链模式和状态模式:责任链模式中各个对象并不指定下一个处理的对象,在客户端中设定链条中的顺序及元素,直至被某个责任链元素处理或链条结束;状态模式每个状态知道下个状态,在编译时已设定好。

25.2 责任链模式coding

  1. 业务场景:线上课程发布需经过一系列批准;
  2. 责任链模式关键写法:责任类里包含一个自己类型的对象;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

25.3 责任链模式源码-servlet

  1. javax.servlet.Filter

26 访问者模式讲解+源码解析

26.1 访问者模式讲解

  1. 封装作用于某数据结构(如List/Set/Map等)中的各元素的操作;
    可以在不改变各元素的类的前提下,定义作用于这些元素的操作;
    类型:行为型;
  2. 适用场景:
    一个数据结构如(List/Set/Map等)包含很多类型对象;
    数据结构与数据操作分离;
  3. 优点:
    增加新的操作很容易,即增加一个新的访问者;
  4. 缺点:
    增加新的数据结构困难;
    具体元素变更比较麻烦;
  5. 相关设计模式:
    访问者模式和迭代器模式:都是在某种数据结构上进行处理,访问者模式用于对保存在数据结构中的元素进行某种特定的处理,迭代器模式主要用于逐个遍历保存在数据结构中的元素;

26.2 访问者模式coding

  1. 业务场景:网站上不同课程,实战课程有price;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    核心:根据不同visit,对相同数据产生不同操作行为;
  2. 访问者模式日常使用不广泛,在数据加载和数据操作分离的情况下,可以考虑使用访问者模式;

26.3 访问者模式源码-jdk-spring

  1. jdk: java.nio.FileVisitor 文件访问者(不能满足要求时可继承覆盖)
  2. spring: BeanDefinitionVisitor

27 状态模式讲解+Coding+源码解析

27.1 状态模式讲解

  1. 定义:允许一个对象在其内部状态改变时,改变它的行为;
    类型:行为型;
  2. 适用场景:
    一个对象存在多个状态(不同状态下行为不同),且状态可相互转换;
  3. 优点:
    将不同的状态隔离;
    把各种状态的转换逻辑,分布到State的子类中,减少相互间依赖;
    增加新的状态非常简单;
  4. 缺点:
    状态多的业务场景导致类数目增加,系统变复杂;
  5. 相关设计模式:
    状态模式和享元模式;

27.2 状态模式Coding

  1. 业务场景:视频播放开始、播放、暂停、停止;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

27.3 状态模式源码-JSF

  1. javax.faces.lifecycle: Lifecycle -> excute()

28 课程总结

  1. UML入门:UML基础、UML类图、UML时序图、UML类关系、UML记忆技巧;
  2. 七大设计原则:开闭原则,依赖倒置原则,单一职责原则,接口隔离原则,迪米特原则,里氏替换原则,合成复用原则;
  3. 创建型模式:工厂方法模式,抽象工厂模式,建造者模式,单例模式,原型模式;
    在这里插入图片描述
  4. 结构型模式:适配器模式,装饰者模式,代理模式,外观模式,桥接模式,组合模式,享元模式;
    在这里插入图片描述
  5. 行为型模式:策略模式,观察者模式,责任链模式,备忘录模式,模板方法模式,迭代器模式,中介者模式,命令模式,访问者模式,解释器模式,状态模式;
    在这里插入图片描述
  6. 辅助学习资料:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值