Java设计模式精讲—课程笔记10
25 责任链模式讲解+Coding+源码解析
25.1 责任链模式讲解
- 为请求创建一个接收此次请求对象的链;
类型:行为型; - 适用场景:
一个请求的处理需要多个对象当中的一个或几个协作处理; - 优点:
请求的发送者和接收者(请求的处理)解耦;
责任链可以动态组合; - 缺点:
责任链太长或者处理时间过长,影响性能;
责任链有可能过多; - 相关设计模式:
责任链模式和状态模式:责任链模式中各个对象并不指定下一个处理的对象,在客户端中设定链条中的顺序及元素,直至被某个责任链元素处理或链条结束;状态模式每个状态知道下个状态,在编译时已设定好。
25.2 责任链模式coding
- 业务场景:线上课程发布需经过一系列批准;
- 责任链模式关键写法:责任类里包含一个自己类型的对象;
25.3 责任链模式源码-servlet
- javax.servlet.Filter
26 访问者模式讲解+源码解析
26.1 访问者模式讲解
- 封装作用于某数据结构(如List/Set/Map等)中的各元素的操作;
可以在不改变各元素的类的前提下,定义作用于这些元素的操作;
类型:行为型; - 适用场景:
一个数据结构如(List/Set/Map等)包含很多类型对象;
数据结构与数据操作分离; - 优点:
增加新的操作很容易,即增加一个新的访问者; - 缺点:
增加新的数据结构困难;
具体元素变更比较麻烦; - 相关设计模式:
访问者模式和迭代器模式:都是在某种数据结构上进行处理,访问者模式用于对保存在数据结构中的元素进行某种特定的处理,迭代器模式主要用于逐个遍历保存在数据结构中的元素;
26.2 访问者模式coding
- 业务场景:网站上不同课程,实战课程有price;
核心:根据不同visit,对相同数据产生不同操作行为; - 访问者模式日常使用不广泛,在数据加载和数据操作分离的情况下,可以考虑使用访问者模式;
26.3 访问者模式源码-jdk-spring
- jdk: java.nio.FileVisitor 文件访问者(不能满足要求时可继承覆盖)
- spring: BeanDefinitionVisitor
27 状态模式讲解+Coding+源码解析
27.1 状态模式讲解
- 定义:允许一个对象在其内部状态改变时,改变它的行为;
类型:行为型; - 适用场景:
一个对象存在多个状态(不同状态下行为不同),且状态可相互转换; - 优点:
将不同的状态隔离;
把各种状态的转换逻辑,分布到State的子类中,减少相互间依赖;
增加新的状态非常简单; - 缺点:
状态多的业务场景导致类数目增加,系统变复杂; - 相关设计模式:
状态模式和享元模式;
27.2 状态模式Coding
- 业务场景:视频播放开始、播放、暂停、停止;
27.3 状态模式源码-JSF
- javax.faces.lifecycle: Lifecycle -> excute()
28 课程总结
- UML入门:UML基础、UML类图、UML时序图、UML类关系、UML记忆技巧;
- 七大设计原则:开闭原则,依赖倒置原则,单一职责原则,接口隔离原则,迪米特原则,里氏替换原则,合成复用原则;
- 创建型模式:工厂方法模式,抽象工厂模式,建造者模式,单例模式,原型模式;
- 结构型模式:适配器模式,装饰者模式,代理模式,外观模式,桥接模式,组合模式,享元模式;
- 行为型模式:策略模式,观察者模式,责任链模式,备忘录模式,模板方法模式,迭代器模式,中介者模式,命令模式,访问者模式,解释器模式,状态模式;
- 辅助学习资料: