1. 程式人生 > 其它 >Java實現策略模式

Java實現策略模式

策略模式(Strategy),將類中不確定的行為分離出去,單獨建立行為類。

策略模式示例:

科學家測試猴子的數學能力,一隻猴子一次只做一種運算(加減乘除)

1.首先,定義行為介面,及行為類

運算行為介面

public interface Operation
{
    double calc(double a,double b);
}

加法行為類

public class AddOperation implements Operation
{
    @Override
    public double calc(double a,double b)
    {
        return a+b;
    }
}

減法行為類

public class SubtractOperation implements Operation
{
    @Override
    public double calc(double a,double b)
    {
        return a-b;
    }
}

乘法行為類

public class MultiplyOperation implements Operation
{
    @Override
    public double calc(double a,double b)
    {
        return a*b;
    }
}

除法行為類

public class DivideOperation implements Operation
{
    @Override
    public double calc(double a,double b)
    {
        return a/b;
    }
}

2.然後,定義猴子類

public abstract class Monkey
{
    private String name;
    private Operation operation; // 行為超類(介面)

    public Monkey(String name)
    {
        this.name=name;
    }

    // 動態設定具體行為類
    public void setOperation(Operation operation)
    {
        this.operation=operation;
    }

    public double doCalc(double a,double b)
    {
        return operation.calc(a,b);
    }
}

3.使用的時候,只需要動態的設定行為類即可

Monkey monkey=new Monkey("孫悟空");
monkey.setOperation(new AddOperation());
System.out.println(monkey.doCalc(1,2));

monkey.setOperation(new MultiplyOperation());
System.out.println(monkey.doCalc(2,3));