设计模式----------策略模式

Posted 蝈蝈大王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式----------策略模式相关的知识,希望对你有一定的参考价值。

策略模式,不讲过多的废话。我们来直接看代码。

1、我们先定一个接口

package com.guoguo.celvemoshi;
/**
 * 定义一个策略接口
 * @author 蝈蝈
 *
 */
public interface StrategyService {
    //定义一个可执行方法
    public void execute();
}

2、策略的具体实现(java多态---不懂先去了解多态的使用)

package com.guoguo.celvemoshi;

/**
 * 第一个策略
 * @author 蝈蝈
 *
 */
public class CelveOneServiceImpl implements StrategyService{

    @Override
    public void execute() {
        System.err.println("执行策略一");
    }

}
package com.guoguo.celvemoshi;

/**
 * 第二个策略
 * @author 蝈蝈
 *
 */
public class CelveTwoServiceImpl implements StrategyService {

    @Override
    public void execute() {
        // TODO Auto-generated method stub
        System.err.println("执行策略二");
    }

}
package com.guoguo.celvemoshi;
/**
 * 第三个策略
 * @author 蝈蝈
 *
 */
public class CelveThreeServiceImpl implements StrategyService {

    @Override
    public void execute() {
        // TODO Auto-generated method stub
        System.err.println("执行策略三");
    }

}

3、策略定好之后,需要有个地方存放这些策略,以便在不同的情况下方便使用

package com.guoguo.celvemoshi;

public class Context {
    private StrategyService straService;
    //定义构造方法
    public Context(StrategyService straService){
        this.straService = straService;
    }
    //定义一个执行方法,去执行对应的策略
    public void execute() {
        this.straService.execute();
    }
    
}

4、策略的使用

package com.guoguo.celvemoshi;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Context context;
        //在不同的情况下使用不同的策略,我们先使用策略三
        context = new Context(new CelveThreeServiceImpl());
        context.execute();
        
        // 在不同的情况下使用不同的策略,我们先使用策略二
        context = new Context(new CelveTwoServiceImpl());
        context.execute();

        // 在不同的情况下使用不同的策略,我们先使用策略一
        context = new Context(new CelveOneServiceImpl());
        context.execute();
        
    }

}

 

以上是关于设计模式----------策略模式的主要内容,如果未能解决你的问题,请参考以下文章

Redis实现分布式锁(设计模式应用实战)

设计模式策略模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式