zoukankan      html  css  js  c++  java
  • 策略模式

    描述

    策略模式中,一个策略类的行为或方法,可以在运行时更改。

    解释一下:假设我们有一个游戏策略生成器,输入不同情况,就会产生不同对应策略出来,这就是策略模式。即我们只需要建立一个策略器,就能在不同状况下得到不同策略。

    实例

    interface MathAlgorithm {
       public int calculate(int num1, int num2);
    }
    class MathAdd implements MathAlgorithm{
       @Override
       public int calculate(int num1, int num2) {
          return num1 + num2;
       }
    }
    class MathSubstract implements MathAlgorithm{
       @Override
       public int calculate(int num1, int num2) {
          return num1 - num2;
       }
    }
    class MathMultiply implements MathAlgorithm{
       @Override
       public int calculate(int num1, int num2) {
          return num1 * num2;
       }
    }
    //相当于一个策略生成器
    class MathContext {
       private MathAlgorithm algorithm;
    
       public MathContext(MathAlgorithm strategy){
          this.algorithm = strategy;
       }
    
       public int execute(int num1, int num2){
          return algorithm.calculate(num1, num2);
       }
    }
    public class Main {
       public static void main(String[] args) {
          MathContext context = new MathContext(new MathAdd());    
          System.out.println("10 + 5 = " + context.execute(10, 5));
    
          context = new MathContext(new MathSubstract());    
          System.out.println("10 - 5 = " + context.execute(10, 5));
    
          context = new MathContext(new MathMultiply());    
          System.out.println("10 * 5 = " + context.execute(10, 5));
       }
    }
    

    代码来源:特别感谢 w3school java设计模式之策略模式

  • 相关阅读:
    星球基地
    手机评价
    2018
    mongoDB(Window)
    linux
    【整理】Java 11新特性总结
    【整理】Java 10新特性总结
    【整理】Java 9新特性总结
    【整理】Java 8新特性总结
    Java -- 内部类(二)
  • 原文地址:https://www.cnblogs.com/K-artorias/p/7976008.html
Copyright © 2011-2022 走看看