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();
            
        }
    
    }
  • 相关阅读:
    django 项目 crm 关于展示表的细节
    djagngo crm 项目 展示页面 和分页
    django项目 crm登录 注册
    django项目 crm表结构一些常用的字段
    django认证 auth
    django form组件
    json和ajax技术
    VS 2013编译64位版本QT 4.8.6及使用cmake为依赖QT生成VS项目时Could NOT find Qt4
    使用国内pypi源来安装python包
    [转]ubuntu 下无法启动chrome
  • 原文地址:https://www.cnblogs.com/guokai870510826/p/8414127.html
Copyright © 2011-2022 走看看