admin管理员组文章数量:1567302
1. Strategy Design Pattern是什么?
策略设计模式是行为模式的一种。它定义了一组封装好的算法,可以用来执行某种特定的行为。
在策略设计模式中国年,我们创建代表不同策略不同上下文的类,所选择的策略模式对象选取不同的算法执行。
2. 策略设计模式UML图
Context中包含着 Strategy 对象。上下文的设置可能是任何需要变化行为的情形–比如需要不同排序算法的例子等。
Strategy 被设计成一种接口存在,而ConcreteStrategy可以在Context中自由切换,不会影响Context的实现。
3. 策略设计模式Demo
package com.fqyuan.thinking;
interface Strategy {
public int operate(int num1, int num2);
}
class ConcreteStrategyAdd implements Strategy {
@Override
public int operate(int num1, int num2) {
return num1 + num2;
}
}
class ConcreteStrategySubtract implements Strategy {
@Override
public int operate(int num1, int num2) {
return num1 - num2;
}
}
class ConcreteStrategyMulti implements Strategy {
@Override
public int operate(int num1, int num2) {
return num1 * num2;
}
}
class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2) {
return strategy.operate(num1, num2);
}
}
public class StrategyDemo {
public static void main(String[] args) {
int num1 = 22, num2 = 4;
Context context1 = new Context(new ConcreteStrategyAdd());
int result1 = context1.executeStrategy(num1, num2);
System.out.println(num1 + " + " + num2 + " = " + result1);
Context context2 = new Context(new ConcreteStrategySubtract());
int result2 = context2.executeStrategy(num1, num2);
System.out.println(num1 + " - " + num2 + " = " + result2);
Context context3 = new Context(new ConcreteStrategyMulti());
int result3 = context3.executeStrategy(num1, num2);
System.out.println(num1 + " * " + num2 + " = " + result3);
}
}
//Running result:
22 + 4 = 26
22 - 4 = 18
22 * 4 = 88
本文标签: 策略模式StrategyDesignPattern
版权声明:本文标题:Strategy Design Pattern 策略设计模式 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1725701816a1037564.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论