关键词:Spring,设计模式,策略模式
上一章:[b]Spring框架的设计理念与设计模式(8)-代理模式[/b] [url]http://javapub.iteye.com/blog/751652[/url]
[b]策略模式[/b]
[b]策略模式原理[/b]
策略模式顾名思义就是做某事的策略,这在编程上通常是指完成某个操作可能有多种方法,这些方法各有千秋,可能有不同的适应的场合,然而这些操作方法都有可能用到。各一个操作方法都当作一 个实现策略,使用者可能根据需要选择合适的策略。
下面是策略模式的结构:
[img]http://www.kutoku.info/images/java/100831/spring22.gif[/img]
Context:使用不同策略的环境,它可以根据自身的条件选择不同的策略实现类来完成所要的操作。它持有一个策略实例的引用。创建具体策略对象的方法也可以由他完成。
◆Strategy:抽象策略,定义每个策略都要实现的策略方法
◆ConcreteStrategy:具体策略实现类,实现抽象策略中定义的策略方法
◆Spring中策略模式的实现
◆Spring中策略模式使用有多个地方,如Bean定义对象的创建以及代理对象的创建等。这里主要看一下代理对象创建的策略模式的实现。
前面已经了解Spring的代理方式有两个Jdk动态代理和CGLIB代理。这两个代理方式的使用正是使用了策略模式。它的结构图如下所示:
[img]http://www.kutoku.info/images/java/100831/spring23.gif[/img]
在上面结构图中与标准的策略模式结构稍微有点不同,这里抽象策略是AopProxy接口,Cglib2AopProxy和 JdkDynamicAopProxy分别代表两种策略的实现方式,ProxyFactoryBean就是代表Context角色 ,它根据条件选择使用Jdk代理方式还是CGLIB方式,而另外三个类主要是来负责创建具体策略对象,ProxyFactoryBean是通过依赖的方法来关联具体策略对象的,它是通过调用策略对象的getProxy (ClassLoaderclassLoader)方法来完成操作。
[b]目录--Spring框架的设计理念与设计模式[/b]
[b]Spring框架的设计理念与设计模式(1)-Spring的架构[/b] [url]http://javapub.iteye.com/blog/751539[/url]
[b]Spring框架的设计理念与设计模式(2)-Spring的设计理念[/b] [url]http://javapub.iteye.com/blog/751545[/url]
[b]Spring框架的设计理念与设计模式(3)-Bean组件[/b] [url]http://javapub.iteye.com/blog/751550[/url]
[b]Spring框架的设计理念与设计模式(4)-Context组件[/b] [url]http://javapub.iteye.com/blog/751625[/url]
[b]Spring框架的设计理念与设计模式(5)-Core组件[/b] [url]http://javapub.iteye.com/blog/751627[/url]
[b]Spring框架的设计理念与设计模式(6)-Ioc容器及BeanFactory工厂[/b] [url]http://javapub.iteye.com/blog/751635[/url]
[b]Spring框架的设计理念与设计模式(7)-Spring中AOP特性与实现[/b] [url]http://javapub.iteye.com/blog/751642[/url]
[b]Spring框架的设计理念与设计模式(8)-代理模式[/b] [url]http://javapub.iteye.com/blog/751652[/url]
[b]Spring框架的设计理念与设计模式(9)-策略模式[/b] [url]http://javapub.iteye.com/blog/751653[/url]
上一章:[b]Spring框架的设计理念与设计模式(8)-代理模式[/b] [url]http://javapub.iteye.com/blog/751652[/url]
[b]策略模式[/b]
[b]策略模式原理[/b]
策略模式顾名思义就是做某事的策略,这在编程上通常是指完成某个操作可能有多种方法,这些方法各有千秋,可能有不同的适应的场合,然而这些操作方法都有可能用到。各一个操作方法都当作一 个实现策略,使用者可能根据需要选择合适的策略。
下面是策略模式的结构:
[img]http://www.kutoku.info/images/java/100831/spring22.gif[/img]
Context:使用不同策略的环境,它可以根据自身的条件选择不同的策略实现类来完成所要的操作。它持有一个策略实例的引用。创建具体策略对象的方法也可以由他完成。
◆Strategy:抽象策略,定义每个策略都要实现的策略方法
◆ConcreteStrategy:具体策略实现类,实现抽象策略中定义的策略方法
◆Spring中策略模式的实现
◆Spring中策略模式使用有多个地方,如Bean定义对象的创建以及代理对象的创建等。这里主要看一下代理对象创建的策略模式的实现。
前面已经了解Spring的代理方式有两个Jdk动态代理和CGLIB代理。这两个代理方式的使用正是使用了策略模式。它的结构图如下所示:
[img]http://www.kutoku.info/images/java/100831/spring23.gif[/img]
在上面结构图中与标准的策略模式结构稍微有点不同,这里抽象策略是AopProxy接口,Cglib2AopProxy和 JdkDynamicAopProxy分别代表两种策略的实现方式,ProxyFactoryBean就是代表Context角色 ,它根据条件选择使用Jdk代理方式还是CGLIB方式,而另外三个类主要是来负责创建具体策略对象,ProxyFactoryBean是通过依赖的方法来关联具体策略对象的,它是通过调用策略对象的getProxy (ClassLoaderclassLoader)方法来完成操作。
[b]目录--Spring框架的设计理念与设计模式[/b]
[b]Spring框架的设计理念与设计模式(1)-Spring的架构[/b] [url]http://javapub.iteye.com/blog/751539[/url]
[b]Spring框架的设计理念与设计模式(2)-Spring的设计理念[/b] [url]http://javapub.iteye.com/blog/751545[/url]
[b]Spring框架的设计理念与设计模式(3)-Bean组件[/b] [url]http://javapub.iteye.com/blog/751550[/url]
[b]Spring框架的设计理念与设计模式(4)-Context组件[/b] [url]http://javapub.iteye.com/blog/751625[/url]
[b]Spring框架的设计理念与设计模式(5)-Core组件[/b] [url]http://javapub.iteye.com/blog/751627[/url]
[b]Spring框架的设计理念与设计模式(6)-Ioc容器及BeanFactory工厂[/b] [url]http://javapub.iteye.com/blog/751635[/url]
[b]Spring框架的设计理念与设计模式(7)-Spring中AOP特性与实现[/b] [url]http://javapub.iteye.com/blog/751642[/url]
[b]Spring框架的设计理念与设计模式(8)-代理模式[/b] [url]http://javapub.iteye.com/blog/751652[/url]
[b]Spring框架的设计理念与设计模式(9)-策略模式[/b] [url]http://javapub.iteye.com/blog/751653[/url]