spring源码设计模式分析(五)-策略模式

简介: spring源码设计模式分析(五)-策略模式

策略模式:

比如把上班当作一个目标,上班有不同的策略等等。每一次上班都是使用一种策略。

选举哪种策略是根据外面的环境。

程序里面也是同样的道理。总结:就是解决同一个问题的多种方式,但是每次只能选择其中一种方式。

在spring中InstantiationStrategy bean实例化策略接口,用来进行bean实例化。

写一个例子:

首先提供一个人的行为,每一个人需要依赖某一个策略,代码如下:

  1. package com.weizhaoyang.strategy;

  2. /**
  3. * 人的行为
  4. */
  5. public class Person {
  6.    private JobStrategy    jobStrategy;
  7.    public Person(JobStrategy  jobStrategy){
  8.        this.jobStrategy=jobStrategy;
  9.    }
  10.    public void  goJob(){
  11.        jobStrategy.jon();
  12.    }
  13. }

2、提供一个策略的接口:每一个方法就是解决某一个的问题。

  1. package com.weizhaoyang.strategy;

  2. /**
  3. * 上班的策略
  4. */
  5. public interface JobStrategy {
  6.    public void  job();
  7. }

3、写一个开车上班的实现类:

  1. package com.weizhaoyang.strategy;

  2. public class CarJobStrategy implements  JobStrategy {
  3.    @Override
  4.    public void job() {
  5.        System.out.println("开车上班");
  6.    }
  7. }

4、提供一个跑步上班的策略:

  1. package com.weizhaoyang.strategy;

  2. public class RunJobStrategy implements JobStrategy {
  3.    @Override
  4.    public void job() {
  5.        System.out.println("跑步上班");
  6.    }
  7. }

5、提供骑自行车上班

  1. package com.weizhaoyang.strategy;

  2. public class BickJobStrategy implements  JobStrategy {
  3.    @Override
  4.    public void job() {
  5.        System.out.println("骑自行车上班");
  6.    }
  7. }

6、测试类:

  1. package com.weizhaoyang.strategy;

  2. public class StrateTest  {
  3.    public static void main(String[] args) {
  4.        //初始化一个策略
  5.        JobStrategy jobStrategy=new CarJobStrategy();
  6.        //对人初始化
  7.        Person person=new Person(jobStrategy);
  8.        person.goJob();
  9.    }
  10. }

运行的结果如下:

那么策略的时机是什么时候改变的呢?可以改成springmvc中的从外面传入参数进来,策略模式也是对if-else的一种替代思想。与工厂模式很像,但是区别工厂模式回产生很多种对象,但是策略模式只能选择一种。设计模式是以不同的场景和结构而产生不同的设计模式。

相关文章
|
10小时前
|
设计模式 Java Spring
spring源码设计模式分析(六)-模板方法模式
spring源码设计模式分析(六)-模板方法模式
|
10小时前
|
设计模式 Java 数据库
spring源码设计模式分析(八)-访问者模式
spring源码设计模式分析(八)-访问者模式
|
10小时前
|
设计模式 存储 Java
spring源码设计模式分析(一)
spring源码设计模式分析(一)
|
10小时前
|
设计模式 搜索推荐 Java
spring源码设计模式分析(三)
spring源码设计模式分析(三)
|
10小时前
|
消息中间件 设计模式 缓存
spring源码设计模式分析(四)-观察者模式
spring源码设计模式分析(四)-观察者模式
|
10小时前
|
设计模式 Java Spring
spring源码设计模式分析-代理设计模式(二)
spring源码设计模式分析-代理设计模式(二)
|
4月前
|
设计模式 算法 Java
【设计模式系列笔记】策略模式
策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列的算法,将每个算法封装起来,并且使它们可以互相替换。策略模式使得算法可以独立于客户端而变化。
64 0
|
设计模式 算法 安全
深入浅出设计模式 - 策略模式
深入浅出设计模式 - 策略模式
119 0
深入浅出设计模式 - 策略模式
|
设计模式 算法 安全
深入浅出设计模式 - 模板方法模式
深入浅出设计模式 - 模板方法模式
86 0
深入浅出设计模式 - 模板方法模式
|
设计模式 算法 搜索推荐
【设计模式】用Java实现策略模式
多种算法或行为选择:当有多个相关的算法或行为可供选择,并且需要在运行时动态选择其中之一时,策略模式非常适用。它允许根据需求选择适当的策略,而不需要更改客户端代码。
82 0