项目中用策略模式往往启到事半功倍的效果。
第一步:
package com.example.myapp.strategy2;
/**
* Created by mike.
* Created on 2020/4/1.
*/
public interface Strategy {
int doOperate(int num1,int num2);
}
第二步:
package com.example.myapp.strategy2;
/**
* Created by mike.
* Created on 2020/4/1.
*/
public class OperateAdd implements Strategy {
@Override
public int doOperate(int num1, int num2) {
return num1 + num2;
}
}
package com.example.myapp.strategy2;
/**
* Created by mike.
* Created on 2020/4/1.
*/
public class OperateSubstract implements Strategy {
@Override
public int doOperate(int num1, int num2) {
return num1 - num2;
}
}
package com.example.myapp.strategy2;
/**
* Created by mike.
* Created on 2020/4/1.
*/
public class OperateMulpity implements Strategy {
@Override
public int doOperate(int num1, int num2) {
return num1 * num2;
}
}
第三步:
package com.example.myapp.strategy2;
/**
* Created by mike.
* Created on 2020/4/1.
*/
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public int executeOperate(int num1, int num2){
return strategy.doOperate(num1, num2);
}
}
第四步:
package com.example.myapp.strategy2;
import org.junit.Test;
/**
* Created by mike.
* Created on 2020/4/1.
*/
public class StrategyDemo {
@Test
public void main() {
Context context = new Context(new OperateAdd());
System.out.println(context.executeOperate(5, 10));
context = new Context(new OperateSubstract());
System.out.println(context.executeOperate(5, 10));
context = new Context(new OperateMulpity());
System.out.println(context.executeOperate(5, 10));
}
}
输出结果:
15
-5
50