zoukankan      html  css  js  c++  java
  • 策略模式(Strategey Pattern)

    策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

    下面举个例子:

    有两个具体策略,分别执行两个整型加法和减法。

    interface Strategy {
        public abstract int handle(int a, int b);
    }
    
    public class AddOperation implements Strategy {
         public int handle(int a, int b) {
            return a+b;
        }
    }
    
    public class SubstractOperation implements Strategy {
         public int handle(int a, int b) {
            return a-b;
        }
    }
    
    public class Context {
        Strategy strategy;
        public Context(Strategy s) {
            strategy = s;
        }
       
        public void display(int a, int b) {
            int x = strategy.handle(a, b);
            System.out.println("result=" + x);
        }
    }
    
    public class Test {
        public static void main(String[] args) {
                Context c1 = new Context(new AddOperation());
                c1.display(1,2);
    
                Context c2 = new Context(new SubstractOperation());
                c2.display(1,2);
        }
    }

    如此一来,就能在运行时改变选择的策略,具体策略与客户解耦了,就算具体策略的细节被改变,客户也不需要知道。

  • 相关阅读:
    linux 环境下安装oracle11g方法及安装过程中遇上的问题解决方法
    Opencv Mat的操作
    Opencv 的数据结构
    Opencv 摄像头矫正
    LM算法
    Python 正则表达式
    find grep
    Socket 入门
    Python thread
    Javascript实现页面跳转的几种方式
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5570149.html
Copyright © 2011-2022 走看看