java设计模式(行为型)之策略模式

第0章:简介

策略模式定义:定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。本模式使得算法可独立于使用它的客户而变化

策略模式本质:分离算法,选择实现

参考:http://chjavach.iteye.com/blog/696977研磨设计模式(书籍),大话设计模式(书籍)

模式图:

待补充


第1章:实践

(1)策略接口(Strategy.java)

package com.mcc.core.designPattern.behavior.strategy;

/**
 * 策略接口
 *
 * 策略模式的定义:定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。本模式使得算法可独立于使用它的客户而变化
 * 策略模式的本质:分离算法,选择实现
 *
 * @author <a href="mailto:[email protected]">menergy</a>
 *         DateTime: 14-3-16  下午7:03
 */
public interface Strategy {

    public void someMethod();
}

(2)策略A(StrategyImplA.java)

package com.mcc.core.designPattern.behavior.strategy;

/**
 * 策略A
 *
 * @author <a href="mailto:[email protected]">menergy</a>
 *         DateTime: 14-3-16  下午7:05
 */
public class StrategyImplA implements Strategy {
    @Override
    public void someMethod() {
        System.out.println("执行策略A操作");
    }
}

(3)策略B(StrategyImplB.java)

package com.mcc.core.designPattern.behavior.strategy;

/**
 * 策略B
 *
 * @author <a href="mailto:[email protected]">menergy</a>
 *         DateTime: 14-3-16  下午7:05
 */
public class StrategyImplB implements Strategy {
    @Override
    public void someMethod() {
        System.out.println("执行策略B操作");
    }
}

(4)策略C(StrategyImplC.java)

package com.mcc.core.designPattern.behavior.strategy;

/**
 * 策略C
 *
 * @author <a href="mailto:[email protected]">menergy</a>
 *         DateTime: 14-3-16  下午7:05
 */
public class StrategyImplC implements Strategy {
    @Override
    public void someMethod() {
        System.out.println("执行策略C操作");
    }
}

(5)上下文对象(Context.java)

package com.mcc.core.designPattern.behavior.strategy;

/**
 * 上下文对象,通常持有具体的策略对象
 *
 * @author <a href="mailto:[email protected]">menergy</a>
 *         DateTime: 14-3-16  下午7:06
 */
public class Context {

    //持有具体的策略对象
    private Strategy strategy;

    /**
     * 构造器,传入具体的策略对象
     * @param strategy
     */
    public Context(Strategy strategy){
        this.strategy = strategy;
    }

    /**
     * 上下文对外接口,可以有其它参数和其它操作
     */
    public void execute(){

        //转调具体策略对象的方法
        strategy.someMethod();

    }
}

(6)客户端测试(Client.java)

package com.mcc.core.designPattern.behavior.strategy;

/**
 * 客户端测试
 *
 * @author <a href="mailto:[email protected]">menergy</a>
 *         DateTime: 14-3-16  下午7:11
 */
public class Client {

    public static void main(String args[]){

        //创建策略对象
        Strategy strategyA = new StrategyImplA();
        Strategy strategyB = new StrategyImplB();
        Strategy strategyC = new StrategyImplC();

        //创建上下文并执行策略A
        Context contextA = new Context(strategyA);
        contextA.execute();

        //创建上下文并执行策略B
        Context contextB = new Context(strategyB);
        contextB.execute();

        //创建上下文并执行策略C
        Context contextC = new Context(strategyC);
        contextC.execute();
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章