Java實現策略模式
阿新 • • 發佈:2021-07-01
策略模式(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));