Spring的设计模式
2015-07-21 10:24
323 查看
Spring详解:http://developer.51cto.com/art/201006/205212.htm
Spring中使用的设计模式也很多,比如
工厂模式:BEAN配置文件
单例模式:实现IOC的时候,给每个类其实就实现出了一个实例
模版模式(就是在父类中定义算法的主要流程,而把一些个性化的步骤延迟到子类中去实现,父类始终控制着整个流程的主动权,子类只是辅助父类实现某些可定制的步骤。说白了就是一个父类的某个方法里头包含很多方法,这就是必须实现的流程,但是又有很多方法是抽象方法,用于子类继承的时候进行实现):JDBC连接数据库,有JDBTTemplate,模板化了连接数据库。
代理模式:对其他对象提供一种代理以控制对这个对象的访问。代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。
Subject:抽象主题,它是代理对象的真实对象要实现的接口,当然这可以是多个接口组成。
ProxySubject:代理类除了实现抽象主题定义的接口外,还必须持有所代理对象的引用
RealSubject:被代理的类,是目标对象。
用在AOC(详见:http://www.cnblogs.com/Qbright/archive/2012/07/25/2605235.html)
策略模式(就是在一个函数中,把不同的类当做参数传进来,根据传进来的类不同,“策略”就不同):如Bean定义对象的创建以及代理对象的创建,在选代理的时候,Spring的代理方式有两个Jdk动态代理和CGLIB代理。
在上面结构图中与标准的策略模式结构稍微有点不同,这里抽象策略是AopProxy接口,Cglib2AopProxy和JdkDynamicAopProxy分别代表两种策略的实现方式,ProxyFactoryBean就是代表Context角色
,它根据条件选择使用Jdk代理方式还是CGLIB方式,而另外三个类主要是来负责创建具体策略对象,ProxyFactoryBean是通过依赖的方法来关联具体策略对象的,它是通过调用策略对象的getProxy (ClassLoaderclassLoader)方法来完成操作。
策略模式详解:http://yangguangfu.iteye.com/blog/815107
Spring中使用的设计模式也很多,比如
工厂模式:BEAN配置文件
单例模式:实现IOC的时候,给每个类其实就实现出了一个实例
模版模式(就是在父类中定义算法的主要流程,而把一些个性化的步骤延迟到子类中去实现,父类始终控制着整个流程的主动权,子类只是辅助父类实现某些可定制的步骤。说白了就是一个父类的某个方法里头包含很多方法,这就是必须实现的流程,但是又有很多方法是抽象方法,用于子类继承的时候进行实现):JDBC连接数据库,有JDBTTemplate,模板化了连接数据库。
代理模式:对其他对象提供一种代理以控制对这个对象的访问。代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。
Subject:抽象主题,它是代理对象的真实对象要实现的接口,当然这可以是多个接口组成。
ProxySubject:代理类除了实现抽象主题定义的接口外,还必须持有所代理对象的引用
RealSubject:被代理的类,是目标对象。
用在AOC(详见:http://www.cnblogs.com/Qbright/archive/2012/07/25/2605235.html)
策略模式(就是在一个函数中,把不同的类当做参数传进来,根据传进来的类不同,“策略”就不同):如Bean定义对象的创建以及代理对象的创建,在选代理的时候,Spring的代理方式有两个Jdk动态代理和CGLIB代理。
在上面结构图中与标准的策略模式结构稍微有点不同,这里抽象策略是AopProxy接口,Cglib2AopProxy和JdkDynamicAopProxy分别代表两种策略的实现方式,ProxyFactoryBean就是代表Context角色
,它根据条件选择使用Jdk代理方式还是CGLIB方式,而另外三个类主要是来负责创建具体策略对象,ProxyFactoryBean是通过依赖的方法来关联具体策略对象的,它是通过调用策略对象的getProxy (ClassLoaderclassLoader)方法来完成操作。
策略模式详解:http://yangguangfu.iteye.com/blog/815107
相关文章推荐
- Java并发
- 2015暑假复习——java
- java中十进制转二进制转换函数
- Java-发送邮件(附件、图片)---(三)类-Properties、Session、MimeMessage
- RabbitMQ第一篇——初识RabbitMQ,简单的消息发送和接收
- java 解决中文乱码
- Java面试-Struts2
- Java_getProperties以记之
- loadrunner java vuser——我的测试记录
- ROS进阶学习手记 5 -- 使用Eclipse开发robot_cleaner
- JAVA先进-设置(1)
- CXF集成Spring实现webservice的发布与请求
- [LeetCode][Java] Path Sum
- dubbo循环依赖的解决
- 9. JavaSE-继承
- BigDecimal.setScale 处理java小数点和四舍五入的算法
- Myeclipse开发servlet时图片文件放在哪
- struts2修改action访问时的后缀名
- 学习play遇到的问题汇总
- Java 容器知识整理 Map List