Spring中涉及的设计模式总结,我做了简单的总结。 参考Spring中涉及的设计模式总结 ,感谢作者分享。
1.简单工厂
实现方式:BeanFactory
2.工厂方法
实现方式:FactoryBean接口
返回的不是factory这个bean,而是这个bean.getOjbect()方法的返回值
3.单例模式
spring依赖注入bean实例,默认是单例的。
单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
spring对单例的实现:spring中的单例模式完成了后半句话,即提供了全局的访问点BeanFactory。
但没有从构造器级别去控制单例,这是因为spring管理的是任意的java对象。
4.适配器模式
实现方式:SpringMVC中的适配器HandlerAdatper。
HandlerAdatper根据Handler规则执行不同的Handler。
5.装饰者模式
实现方式:spring中用到包装器模式在类名上有两种表现:一种类名中含有Wrapper,
另一种类名中含有Decorator
实质:1.动态的给一个对象添加一些额外的职责。
2.就增加功能来说,Decorator模式相比生成子类更为灵活。
疑问:https://www.cnblogs.com/alomsc/p/12580350.html
Q:这个里面的内容,跟代理比较一下看看区别吧???
A:JDK动态代理 对“装饰者”设计模式 简化。使用前提:必须有接口
6.代理模式
实现方式:AOP底层,就是动态代理模式的实现。
1.动态代理:在内存中构建的,不需要手动编写代理类
2.静态代理:需要手工编写代理类,代理类引用被代理对象。
7.观察者模式
实现方式:spring的事件驱动模型
具体实现:事件机制的实现需要三个部分: 事件源、 事件、 事件监听器
ApplicationContext接口 ApplicationEvent抽象类 ApplicationListener接口
补充一个事件广播器:ApplicationEventMulticaster抽象类
代码实现可以分为两种:接口 、 注解
8.策略模式
实现方式:spring框架的资源访问Resource接口。
1.resource接口本身没有提供访问任何底层资源的实现逻辑,针对不同的底层资源,spring将会提供不同的resource实现类,
不同的实现类负责不同的资源访问逻辑。
2.spring为Resource接口提供了如下实现类:
UrlResource
ClassPathResource
FileSystemResource
ServletContextResource
InputStreamResource
ByteArrayResource
9.模板方法模式
实质:是模板方法模式和回调模式的结合,是Template Method不需要继承的另一种实现方式。Spring几乎所有的外接扩展都采用这种模式。
具体实现:JDBC的抽象和对Hibernate的集成,都采用了一种理念或者处理方式,那就是模板方法模式与相应的Callback接口相结合。