【每天一个java设计模式(十六)】 - 策略模式

x33g5p2x  于2021-12-23 转载在 Java  
字(1.7k)|赞(0)|评价(0)|浏览(474)

策略模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。

下面我们通过加减乘的运算来实现策略模式。

策略模式的实现;

1. 创建一个策略接口

public interface Strategy {
    public int operate(int x,int y);
}

2. 创建策略接口的三个实现类,分别表示加减乘运算

public class AddStrategy implements Strategy {
    @Override
    public int operate(int x, int y) {
        return x + y;
    }
}
public class SubStrategy implements Strategy {
    @Override
    public int operate(int x, int y) {
        return x - y;
    }
}
public class MultStrategy implements Strategy {
    @Override
    public int operate(int x, int y) {
        return x * y;
    }
}

3. 使用 Context 来查看当它改变策略 时的行为变化。

public class Context {
    private Strategy strategy;

    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public int execute(int x,int y){
        return strategy.operate(x,y);
    }
}

4. 使用策略模式完成加减乘运算

public class StrategyMain {
    public static void main(String[] args) {
        int x = 24;
        int y = 8;
        Context context1 = new Context(new AddStrategy());
        int add = context1.execute(x,y);
        System.out.println("x = 24, y = 8, x+y=" + add);

        Context context2 = new Context(new SubStrategy());
        int sub = context2.execute(x,y);
        System.out.println("x = 24, y = 8, x-y=" + sub);

        Context context3 = new Context(new MultStrategy());
        int mult = context3.execute(x,y);
        System.out.println("x = 24, y = 8, x*y=" + mult);
    }
}

  • 什么是设计模式:【每天一个java设计模式(零)】 - 设计模式基本概念及七大设计原则

创建型模式

  • 工厂模式:【每天一个java设计模式(一)】 - 工厂模式
  • 抽象工厂模式: 【每天一个java设计模式(二)】 - 抽象工厂模式
  • 单例模式:【每天一个java设计模式(三)】 - 单例模式
  • 原型模式:【每天一个java设计模式(四)】 - 原型模式
  • 建造者模式: 【每天一个java设计模式(五)】 - 建造者模式

结构型模型

  • 适配器模式 : 【每天一个java设计模式(六)】 - 适配器模式
  • 代理模式: 【每天一个java设计模式(七)】 - 代理模式模式
  • 桥接模式:【每天一个java设计模式(八)】 - 桥接模式
  • 装饰器模式:【每天一个java设计模式(九)】 - 装饰器模式
  • 外观模式:【每天一个java设计模式(十)】 - 外观模式
  • 享元模式:【每天一个java设计模式(十一)】 - 享元模式
  • 组合模式:【每天一个java设计模式(十二)】 - 组合模式

行为型模式

  • 模板模式:【每天一个java设计模式(十三)】 - 模板模式
  • 解释器模式:【每天一个java设计模式(十四)】 - 解释器模式
  • 命令模式:【每天一个java设计模式(十五)】 - 命令模式

下一节:
状态模式:【每天一个java设计模式(十七)】 - 状态模式

相关文章