设计模式
2023-03-18 15:27:37 19 举报
AI智能生成
设计模式
作者其他创作
大纲/内容
设计原则
单一职责原则
一个类变化的原因只能有一个
开闭原则
开放扩展
关闭修改
关闭修改
里氏替换原则
任何基类出现的地方子类一定可以出现
依赖倒置原则
针对接口编程
依赖于抽象而不依赖于具体
依赖于抽象而不依赖于具体
接口隔离原则
迪米特法则|最少知道原则
一个实体要尽量减少与其他实体的互相作用。
使功能模块相对独立
使功能模块相对独立
合成复用原则
尽量使用合成/聚合的方式,而不是使用继承。
设计模式分类
创建型
1.单例
懒汉式,线程不安全
懒汉,线程安全
饿汉
双检锁/双重校验锁
2.工厂模式
3.抽象工常模式
4.建造者模式
对初始化过程复杂的对象进行包装
5.原型模式
利用已有的一个原型对象,快速地生成和原型对象一样的实例。
结构型
6.适配器模式
把一个类的接口,转变为客户端期待的另一个接口
主要有两种方式
1. 继承
2. 引用包装
主要有两种方式
1. 继承
2. 引用包装
7.桥接模式
8.装饰器模式
9.过滤器模式
使用不同的标准来过滤一组对象
如SpringAop 中的切面对象
AbstractAdvisorAutoProxyCreator.findCandidateAdvisors
(获得目标对象需要绑定的切面)方法就是一个过滤器模式
如SpringAop 中的切面对象
AbstractAdvisorAutoProxyCreator.findCandidateAdvisors
(获得目标对象需要绑定的切面)方法就是一个过滤器模式
10.组合模式
又叫部分整体模式
11.外观模式
通过包装类隐藏系统复杂性
12. 享元模式
主要用于减少创建对象的数量,以减少内存占用和提高性能。
这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
如Spring 的BeanFactory 的 单例缓存 和生命周期缓存
这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
如Spring 的BeanFactory 的 单例缓存 和生命周期缓存
13. 代理模式
这个很好理解,SpringAop,MyBatis接口,微服务接口。
都是基于代理来实现的
都是基于代理来实现的
行为型
14. 责任链模式
比如Servlet Filter
SpringMvc 拦截器
SpringMvc 拦截器
15. 命令模式
请求以命令的形式包裹在对象中,并传给调用对象。
调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
16. 解释器模式
SQL解析器,JVM字节码解析器
17. 迭代器模式
18. 中介者
二道贩子的感觉
19. 备忘录模式
类似序列化反序列化
20. 观察者模式
如Spring中的事件监听
21. 状态模式
类的行为是基于它的状态改变的
22. 空对象模式
感觉叫默认对象模式,更贴切。
当没有满足需求的预制实例时提供默认实例
当没有满足需求的预制实例时提供默认实例
23. 策略模式
一个类的行为或其算法可以在运行时更改
24. 模板方法
一个抽象类公开定义了执行它的方法的方式/模板。
它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
这种类型的设计模式属于行为型模式。
比如Spring AbstractApplicationContext,refresh 方法
它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
这种类型的设计模式属于行为型模式。
比如Spring AbstractApplicationContext,refresh 方法
25. 访问者模式
比较复杂,感觉有点像Ajax的回调逻辑
成功失败调用不同方法
成功失败调用不同方法
0 条评论
下一页