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);
        }
    }

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

  • 相关阅读:
    自定义一个运行时异常
    对象的知识点正确解释
    decimal模块
    B+树
    Web框架系列之Tornado
    初识git
    Mysql表的操作
    MySQl创建用户和授权
    MySql安装和基本管理
    为什么用Mysql?
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5570149.html
Copyright © 2011-2022 走看看