23种设计模式
2021-01-19 16:51:23 27 举报
AI智能生成
设计模式
作者其他创作
大纲/内容
6大原则
单一职责:就I个类而言,应该只有一个引起他变化的原因
开放封闭原则: 对扩展开放,对修改关闭
里氏转换原则: 子类继承父类,单独完全可以运行
依赖倒转原则: 引用一个对象,如果这个对象有底层类型,直接引用底层类型 针对接口编程,不要针对实现编程
接口隔离原则: 每一个接口应该是一种角色
合成/聚合复用原则: 新的对象应使用一些已有的对象,使之成为新对象的一部分
迪米特原则(最少使用原则): 一个对象应对其他对象有尽可能少的了解
开放封闭原则: 对扩展开放,对修改关闭
里氏转换原则: 子类继承父类,单独完全可以运行
依赖倒转原则: 引用一个对象,如果这个对象有底层类型,直接引用底层类型 针对接口编程,不要针对实现编程
接口隔离原则: 每一个接口应该是一种角色
合成/聚合复用原则: 新的对象应使用一些已有的对象,使之成为新对象的一部分
迪米特原则(最少使用原则): 一个对象应对其他对象有尽可能少的了解
应用场景
工厂设计模式 : Spring使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。
代理设计模式 : Spring AOP 功能的实现。
单例设计模式 : Spring 中的 Bean 默认都是单例的。
模板方法模式 : Spring 中 jdbcTemplate、hibernateTemplate 等以 Template 结尾的对数据库操作的类,它们就使用到了模板模式。
包装器设计模式 : 我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。
观察者模式: Spring 事件驱动模型就是观察者模式很经典的一个应用。
适配器模式 :Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配Controller。
创建型
工厂模式
简单工程(静态工厂)-非23中模式
java 日期类Calendar 类,看 Calendar.getInstance()方法
工厂方法
spring中FactoryBean-经典场景spring和mybties的整合,mapper接口
抽象工厂
单例模式
饿汉模式-线程安全
懒汉模式-非线程安全
懒汉模式-线程安全(双重加锁)
懒汉模式-线程安全+volatile
静态内部类方法-线程安全
枚举方式-线程安全-特别推荐
原型模式
构建模式
结构型
适配器模式
类适配器模式
对象适配器模式
应用场景
框架 Spring 的组成之一 Spring AOP 中,BeforeAdvice、AfterAdvice、ThrowsAdvice 三种通知类型是借助适配器模式实现的,AdvisorAdapter 是一个适配器接口
DK类库中n的一些适配器类,如 InputStreamAdapter 类用于包装 ImageInputStream 接口及其子类对象,使用对象适配器模式
HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
子主题 4
代理模式
静态代理
动态代理
JDK动态代理-编译时增强
1:接口必须要有实现类
2:
Cglib代理(ASM)运行时增强
1:继承实现-子类
装饰者模式
应用场景
Spring 中用到的包装器模式在类名上有两种表现: 一种是类名中含有 Wrapper, 另一种是类名中含有Decorator
BeanDefinitionDecorator
组合模式
外观
应用场景
mvc三层模式
DispatcherServlet--统一入口
享元模式
数据库的数据池
行为型
责任链模式
简单责任链
Filter责任链
servlet实现方式
dubbo实现方式
Mybatis中的Plugin
策略模式
应用
支付方法策略
Spring框架的资源访问Resource接口
观察者模式
Springlistenr
解释器模式
模板模式
应用
jdbcTempalte
RedisTemplate
0 条评论
下一页