设计模式的3个分类:创建型模式、结构型模式、行为型模式
策略模式定义:
策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
策略模式图示:

代码实现:
//定义策略接口
public interface Strategy {
int operation(int num1, int num2);
}
public class ConcreteStrategyA implements Strategy{
@Override
public int operation(int num1, int num2) {
return num1 + num2;
}
}
public class ConcreteStrategyB implements Strategy{
@Override
public int operation(int num1, int num2) {
return num1 * num2;
}
}
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public int executeOperation(int num1, int num2) {
return strategy.operation(num1, num2);
}
}
//Test
public class StrategyPatternDemo {
public static void main(String[] args) {
int num1 = 5;
int num2 = 10;
Strategy strategy = new ConcreteStrategyA();
Context context = new Context(strategy);
int result = context.executeOperation(num1, num2);
System.out.println("result = " + result);//result = 15
strategy = new ConcreteStrategyB();
context = new Context(strategy);
result = context.executeOperation(num1, num2);
System.out.println("result = " + result);//result = 50
}
}
思考:
策略模式还是很常见的,像一个项目招标,在明确了需求之后,投标方会根据需求进行项目的模拟实现。招标单位集中所有的投标资料,分别进行对比,最终确定最合适的方案。
《三十六计》由两大类,然后分出六套,再细化到36个具体计策。
优势:胜战计、敌战计、攻战计(3大类再扩展出:瞒天过海、以逸待劳等)
劣势:混战计、并战计、败战计(3大类再扩展出:空城计、苦肉计等)
当两军交战时,决策者可以根据敌我双方实际情况判断己方是处于优势还是劣势,灵活的使用具体的计策。
--End
原文:https://www.cnblogs.com/heibingtai/p/14052406.html