7. 策略模式

来源:互联网 发布:军工复合体 知乎 编辑:程序博客网 时间:2024/06/06 08:49

一. 策略模式的定义

定义一组算法, 然后将这些算法封装起来简化外部调用 . 每个算法之间可以互相替换

策略模式的成员:
1. Context : 封装算法 , 屏蔽上层模块对算法的直接访问 , 封装调用算法时可能存在的变化
2. Strategy接口 : 对所有算法的抽象 , 以实现每种算法可以花香替换的目的
3. ConcreteStrategy : 具体的每条算法
这里写图片描述

二. 策略模式的扩展 : 策略枚举

策略枚举不再使用子类实现具体算法, 而是把Strategy接口写成枚举对象来防止子类膨胀和策略的对外暴露

/** * 策略枚举类 */public enum Caculator {    Add("+"){        @Override        public int exec(int a,int b) {            return a+b;        }    },    Sub("-"){        @Override        public int exec(int a,int b) {            return a-b;        }    };    String operator = "";    private Caculator(String operator){        this.operator = operator;    }    public String getOperator() {        return operator;    }    public abstract int exec(int a,int b);}
/** * 调用 */public class Main {    public static void main(String[] args) {        int exec = Caculator.Add.exec(1, 2);        System.out.println(exec);    }}
0 0
原创粉丝点击