设计模式-7-策略模式

简介:对象的一个行为,在不同的场景下,有不同的算法

目的:让用于行为的算法和行为进行独立,互不影响

总结:同一行为在不同的场景下,使用不同的算法

组成:对象行为, 算法接口, 算法接口实现

1,对象行为

package com.design.g.strategy.base;
/**
 * 对象行为
 * 上下文
 */
public class Context {

    private StrategyService strategyService;   //策略
    
    public void method(){                      //使用策略的具体方法
        strategyService.algorithm();
    }
    
    public void setStrategyService(StrategyService strategyService) {
        this.strategyService = strategyService;
    }
    
}

2,算法接口

package com.design.g.strategy.base;
/**
 * 算法接口
 * 策略接口
 */
public interface StrategyService {

    /**
     * 策略算法
     */
    void algorithm();
}

3,算法接口实现

package com.design.g.strategy.base;

/**
 * 算法A实现
 * 策略实现 - A算法
 */
public class StrategyAServiceImpl implements StrategyService {

    @Override
    public void algorithm() {
        System.out.println("使用策略 - A - 算法    。。。 。。。");
    }

}
package com.design.g.strategy.base;
/**
 * 算法B实现
 * 策略实现 - B算法
 */
public class StrategyBServiceImpl implements StrategyService {

    @Override
    public void algorithm() {
        System.out.println("使用策略 - B - 算法    。。。 。。。");
    }

}
package com.design.g.strategy.base;
/**
 * 算法C实现
 * 策略实现 - C算法
 */
public class StrategyCServiceImpl implements StrategyService {

    @Override
    public void algorithm() {
        System.out.println("使用策略 - C - 算法    。。。 。。。");
    }

}

4,Main

package com.design.g.strategy.base;

/**
 * 7-策略模式
 * 
 * 简介:往一个方法当中插入随便一段代码
 */
public class MainTest {
    
    public static void main(String[] args) {
        
        //使上下文method方法使用策略A算法
        Context content = new Context();
        content.setStrategyService(new StrategyAServiceImpl());
        content.method();
        
        //使上下文method方法使用策略B算法
        content.setStrategyService(new StrategyBServiceImpl());
        content.method();
        
        //使上下文method方法使用策略C算法
        content.setStrategyService(new StrategyCServiceImpl());
        content.method();
        
    }

}

5,Result

使用策略 - A - 算法    。。。 。。。
使用策略 - B - 算法    。。。 。。。
使用策略 - C - 算法    。。。 。。。
原文地址:https://www.cnblogs.com/wanhua-wu/p/7205500.html