• 设计模式---策略设计模式


    策略模式

    1)基本定义

    一个类的行为或器算法可以在运行时更改,为一种行为模式。
    意图:定义一系列算法,把他们封装起来,并且使他们可以相互替换。
    解决问题:在有多种算法相似的情况下,使用if...else所带来的复杂和难以维护
    使用场景:一个系统有多个类,而区分他们的只是他们直接的行为
    如何解决:场景表示各自策略的对象和一个行为随着策略对象改变而改变的context对象,策略对象改变context对象的指向算法。
    关键代码:实现同一个接口

    类图:

     

    2.demo代码:

    策略接口:

    public interface Strategy {
        public int doOperation(int num1,int num2);
    }

    策略接口实现类:

    public class StrategyAdd implements Strategy{
        @Override
        public int doOperation(int num1, int num2) {
            return num1 + num2;
        }
    }
    
    public class StrategyMultiply implements Strategy{
        @Override
        public int doOperation(int num1, int num2) {
            return num1 * num2;
        }
    }

    策略Context:

    public class StrategyContex {
        Strategy strategy;
        public StrategyContex(Strategy strategy) {
            this.strategy = strategy;
        }
        public void setStrategy(Strategy strategy) {
            this.strategy = strategy;
        }
        public int executeStrategy(int num1,int num2) {
            return strategy.doOperation(num1, num2);
        }
    }

    调用demo:

    public class StrategyDemo {
        public static void main(String[] args) {
            int num1 = 2,num2 = 3;
            StrategyContex contextAdd = new StrategyContex(new StrategyAdd());
            System.out.println(contextAdd.executeStrategy(num1, num2));
            
            StrategyContex contextMultiply = new StrategyContex(new StrategyMultiply());
            System.out.println(contextMultiply.executeStrategy(num1, num2));
            
            System.out.println("*************");
            contextMultiply.setStrategy(new StrategyAdd());
            System.out.println(contextMultiply.executeStrategy(num1, num2));
        }
    }

    调用demo输出:

  • 相关阅读:
    【eoe资源】通过片段创建灵活的用户界面
    史上最全的Android开发索引帖
    临时记录
    五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
    【转】深入探讨 Android 传感器
    Java Collections Framework Java集合框架List,Map,Set等全面介绍之概要篇
    谷歌 G1 android APK安装器 离线安装软件
    【转】請為你的 Android 程式加上 obfuscation 吧!
    【转】Android Toolchain与Bionic Libc
    用VirtualBox在XP环境下虚拟Ubuntu的过程
  • 原文地址:https://www.cnblogs.com/ShouWangYiXin/p/10936463.html
Copyright © 2020-2023  润新知