当前位置:   article > 正文

设计模式:策略模式

设计模式:策略模式

一,策略模式

策略模式(Strategy Pattern)是一种常用的软件设计模式,属于行为型模式。它的目的是定义一系列算法,并将每个算法封装起来让它们可以互换使用,算法的变化不会影响使用算法的用户。策略模式常用于创建一组可互换的算法,客户端可以根据需要选择不同的算法。

二,特点

  1. 封装性:每个算法都被封装在独立的策略类中,这些类通常实现了相同的接口。

  2. 可互换性客户端可以通过切换不同的策略实现来改变算法,而不需要修改依赖算法的代码。

  3. 灵活性:策略模式使得算法的变化独立于使用算法的客户端。

  4. 易于扩展:可以很容易地添加新的策略,而不需要修改现有代码。

三,组成部分

  • Strategy接口:定义了一个或多个方法,这些方法是策略的具体实现。
  • ConcreteStrategy:实现了Strategy接口的具体策略类。
  • Context:使用Strategy对象的类,它维持一个对Strategy对象的引用,并定义了一个方法用于访问Strategy对象的策略方法。

四,实现步骤

  1. 定义Strategy接口,包含算法的方法。
  2. 创建具体的策略类,实现Strategy接口,并实现具体的算法。
  3. 定义Context类,它有一个Strategy类型的成员变量,用于持有策略对象,并有一个方法用于执行策略。
  4. 客户端代码根据需要选择并初始化相应的策略对象,并将其传递给Context

五,代码

  1. interface Strategy {
  2. public int doOperation(int a,int b);
  3. }
  4. class OperationAdd implements Strategy{
  5. @Override
  6. public int doOperation(int a, int b) {
  7. return a + b;
  8. }
  9. }
  10. class OperationSubstract implements Strategy{
  11. @Override
  12. public int doOperation(int a, int b) {
  13. return a - b;
  14. }
  15. }
  16. class OperationMultiply implements Strategy{
  17. @Override
  18. public int doOperation(int a, int b) {
  19. return a*b;
  20. }
  21. }
  22. class Context{//Context类是核心
  23. Strategy strategy;
  24. public Context(Strategy strategy){
  25. this.strategy = strategy;
  26. }
  27. public void setStrategy(Strategy strategy) {
  28. this.strategy = strategy;
  29. }
  30. public int cal(int a,int b){
  31. return strategy.doOperation(a,b);
  32. }
  33. }
  34. public class StrategyDemo{
  35. public static void main(String[] args) {
  36. Context context = new Context(new OperationAdd());
  37. System.out.println(context.cal(2, 3));
  38. context =new Context(new OperationMultiply());
  39. System.out.println(context.cal(3, 4));
  40. }
  41. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/541606
推荐阅读
相关标签
  

闽ICP备14008679号