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();
            
        }
    
    }
  • 相关阅读:
    Java基本数据类型
    Java位运算符
    Java条件编译
    Groovy学习笔记(二)
    Groovy学习笔记(一)
    Java开发环境搭建
    Java接口回调
    [精华][推荐]CAS SSO单点登录服务端客户端实例
    CAS SSO单点登录实例
    分布式架构springcloud+redis+springmvc+springboot
  • 原文地址:https://www.cnblogs.com/guokai870510826/p/8414127.html
Copyright © 2011-2022 走看看