Strategy Design Pattern 策略设计模式

来源:互联网 发布:mac 右键 编辑:程序博客网 时间:2024/06/07 05:49

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 = 2622 - 4 = 1822 * 4 = 88
阅读全文
0 0