• 策略模式


    定义一系列的算法,每个单独封装。

    策略模式中,需要创建一个表示各种策略的对象和一个随着策略对象改变而改变的Context对象。策略对象改变Context对象的算法。

    类图关系

    策略类

    package com.alphajuns.strategy;
    
    public abstract class Strategy {
    
        public abstract void method();
    
    }
    

     策略A

    package com.alphajuns.strategy;
    
    public class StrategyImplA extends Strategy {
    
        @Override
        public void method() {
            System.out.println("策略A");
        }
    
    }
    

     策略B

    package com.alphajuns.strategy;
    
    public class StrategyImplB extends Strategy {
    
        @Override
        public void method() {
            System.out.println("策略B");
        }
    
    }
    

     策略C

    package com.alphajuns.strategy;
    
    public class StrategyImplC extends Strategy {
    
        @Override
        public void method() {
            System.out.println("策略C");
        }
    
    }
    

     环境类

    package com.alphajuns.strategy;
    
    public class Context {
    
        Strategy strategy;
    
        public Context(Strategy strategy) {
            this.strategy = strategy;
        }
    
        public void doMethod() {
            strategy.method();
        }
    
    }
    

     测试类

    package com.alphajuns.strategy;
    
    import org.junit.Test;
    
    public class StrategyTest {
    
        public static void main(String[] args) {
            Context context = new Context(new StrategyImplA());
            context.doMethod();
    
            context = new Context(new StrategyImplB());
            context.doMethod();
    
            context = new Context(new StrategyImplC());
            context.doMethod();
        }
    
    }
    
  • 相关阅读:
    c#判断输入的是不是数字
    params 关键字载入空值的陷阱
    拆箱陷阱
    接口的概念和声明
    数据库
    ios 纵向的UISlider
    微信小程序学习网站
    Spark RDD(2)
    SparkSql
    廖雪峰老师学习网站
  • 原文地址:https://www.cnblogs.com/alphajuns/p/13203183.html
Copyright © 2020-2023  润新知