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

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

    策略模式中,需要创建一个表示各种策略的对象和一个随着策略对象改变而改变的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();
        }
    
    }
    
  • 相关阅读:
    增加路由的方法
    常见问题代码
    统计用
    json格式,但是不要unicode编码
    查看有没有安装ssh服务器端
    Unity3D写雷电游戏(二)
    MFC+Flash图片浏览器
    HGE做的俄罗斯方块
    原来C语言没有重载。。。
    随机生成路径
  • 原文地址:https://www.cnblogs.com/alphajuns/p/13203183.html
Copyright © 2011-2022 走看看