ToB企服应用市场:ToB评测及商务社交产业平台

标题: 23种设计模式之策略模式 [打印本页]

作者: 盛世宏图    时间: 2024-12-10 16:13
标题: 23种设计模式之策略模式
1. 简介

策略模式(Strategy Pattern) 是一种行为设计模式。它界说了一系列算法,将每个算法都封装起来,而且使它们可以相互更换。策略模式让算法的变化独立于使用算法的客户。
比方,想象一个角色扮演游戏,游戏中的角色有不同的攻击方式,如近战攻击、长途攻击和魔法攻击。这些攻击方式可以看作是不同的策略,而角色可以根据环境(如敌人的位置、自身状态等)选择不同的攻击策略。
策略模式的布局

2. 代码

2.1 Strategy (策略接口)

  1. public interface Strategy {
  2.     public int operation(int a, int b);
  3. }
复制代码
2.2 AddStrategy (具体策略类)

  1. public class AddStrategy implements Strategy{
  2.     @Override
  3.     public int operation(int a, int b) {
  4.         return a + b;
  5.     }
  6. }
复制代码
2.3 SubStrategy (具体策略类)

  1. public class SubStrategy implements  Strategy{
  2.     @Override
  3.     public int operation(int a, int b)
  4.     {
  5.         return a-b;
  6.     }
  7. }
复制代码
2.4 MultiplyStrategy (具体策略类)

  1. public class MultiplyStrategy implements Strategy{
  2.     @Override
  3.     public int operation(int a, int b)
  4.     {
  5.         return a*b;
  6.     }
  7. }
复制代码
2.5 Operation (上下文类)

  1. public class Operation {
  2.     private Strategy strategy;
  3.     public Operation(Strategy strategy) {
  4.         this.strategy = strategy;
  5.     }
  6.     public int execute(int a, int b) {
  7.         return strategy.operation(a, b);
  8.     }
  9. }
复制代码
2.6 Test (测试)

  1. public class Test {
  2.     public static void main(String[] args) {
  3.         Operation operation = new Operation(new AddStrategy());
  4.         System.out.println("1 + 2 = " + operation.execute(1, 2));
  5.         operation = new Operation(new SubStrategy());
  6.         System.out.println("1 - 2 = " +operation.execute(1, 2));
  7.         operation = new Operation(new MultiplyStrategy());
  8.         System.out.println("1 * 2 = " +operation.execute(1, 2));
  9.     }
  10. }
复制代码
2.7 运行结果

  1. 1 + 2 = 3
  2. 1 - 2 = -1
  3. 1 * 2 = 2
复制代码
3. 优缺点


4. 总结



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4