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

    策略模式,不讲过多的废话。我们来直接看代码。

    1、我们先定一个接口

    package com.guoguo.celvemoshi;
    /**
     * 定义一个策略接口
     * @author 蝈蝈
     *
     */
    public interface StrategyService {
        //定义一个可执行方法
        public void execute();
    }

    2、策略的具体实现(java多态---不懂先去了解多态的使用)

    package com.guoguo.celvemoshi;
    
    /**
     * 第一个策略
     * @author 蝈蝈
     *
     */
    public class CelveOneServiceImpl implements StrategyService{
    
        @Override
        public void execute() {
            System.err.println("执行策略一");
        }
    
    }
    package com.guoguo.celvemoshi;
    
    /**
     * 第二个策略
     * @author 蝈蝈
     *
     */
    public class CelveTwoServiceImpl implements StrategyService {
    
        @Override
        public void execute() {
            // TODO Auto-generated method stub
            System.err.println("执行策略二");
        }
    
    }
    package com.guoguo.celvemoshi;
    /**
     * 第三个策略
     * @author 蝈蝈
     *
     */
    public class CelveThreeServiceImpl implements StrategyService {
    
        @Override
        public void execute() {
            // TODO Auto-generated method stub
            System.err.println("执行策略三");
        }
    
    }

    3、策略定好之后,需要有个地方存放这些策略,以便在不同的情况下方便使用

    package com.guoguo.celvemoshi;
    
    public class Context {
        private StrategyService straService;
        //定义构造方法
        public Context(StrategyService straService){
            this.straService = straService;
        }
        //定义一个执行方法,去执行对应的策略
        public void execute() {
            this.straService.execute();
        }
        
    }

    4、策略的使用

    package com.guoguo.celvemoshi;
    
    public class Test {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Context context;
            //在不同的情况下使用不同的策略,我们先使用策略三
            context = new Context(new CelveThreeServiceImpl());
            context.execute();
            
            // 在不同的情况下使用不同的策略,我们先使用策略二
            context = new Context(new CelveTwoServiceImpl());
            context.execute();
    
            // 在不同的情况下使用不同的策略,我们先使用策略一
            context = new Context(new CelveOneServiceImpl());
            context.execute();
            
        }
    
    }
  • 相关阅读:
    HDOJ 1028 母函数分析
    尼姆博弈的典型例题
    HDOJ1232 畅通工程 DFS
    第一个八皇后
    HDOJ 1242
    我的“插入算法”实现
    第五讲 this 类变量 类方法
    我的“二分查找算法”实现
    我对锤子ROM 功能的看法——视觉篇
    第六讲 Java 四大特性:抽象 封装 继承 多态
  • 原文地址:https://www.cnblogs.com/guokai870510826/p/8414127.html
Copyright © 2011-2022 走看看