可相互替换一系列的算法或行为;避免使用多重条件判断,扩展性好。
public interface Calculator {
void getResult();
}
public class AddMethod implements Calculator {
@Override
public void getResult() {
System.out.println("add");
}
}
public class SubtractMethod implements Calculator {
@Override
public void getResult() {
System.out.println("subtract");
}
}
public class MathContext {
private Calculator calculator;
public MathContext(Calculator calculator) {
this.calculator = calculator;
}
public void run() {
calculator.getResult();
}
}
@Test
public void StrategyTest() {
MathContext add = new MathContext(new AddMethod());
add.run();
MathContext subtract = new MathContext(new SubtractMethod());
subtract.run();
}