Spring学习(三)策略模式+静态工厂实现ifelse优化

简介

其实我一开始研究ifelse优化参考了这篇blog
点击跳转
其中的思路和代码的部分都是是很清晰的,但是即使源码也不能正常运行出业务代码部分,没有报错。
我仔细一看这是基于Spring环境的,所以我做了一些修改,正确的输出了结果。

这里分享给大家:
与大家共勉~~

目录结构

在这里插入图片描述

代码

基础接口
serviceI

package day0127.ifelseOptimization;

/**
 * @Author: Braylon
 * @Date: 2020/1/26 21:37
 * @Version: 1.0
 */
public interface serviceI {
    void Business1();
    void Business2();
}

service类

package day0127.ifelseOptimization.services;

import day0127.ifelseOptimization.serviceI;
import day0127.ifelseOptimization.strategyFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

/**
 * @Author: Braylon
 * @Date: 2020/1/26 21:40
 * @Version: 1.0
 */
@Component
public class service01 implements serviceI, InitializingBean {
    @Override
    public void Business1() {
        System.out.println("service01: code1");
    }

    @Override
    public void Business2() {
        System.out.println("service01: code2");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        strategyFactory.register("01", this);
    }
}

package day0127.ifelseOptimization.services;

import day0127.ifelseOptimization.serviceI;
import day0127.ifelseOptimization.strategyFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

/**
 * @Author: Braylon
 * @Date: 2020/1/26 21:42
 * @Version: 1.0
 */
@Component
public class service02 implements serviceI, InitializingBean {
    @Override
    public void Business1() {
        System.out.println("service02: code1");
    }

    @Override
    public void Business2() {
        System.out.println("service02: code2");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        strategyFactory.register("service02",this);
    }
}

配置类

package day0127.ifelseOptimization;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * @Author Braylon
 * @Date 2020/1/25 21:15
 */
@Configuration
@ComponentScan("day0127.ifelseOptimization")
public class conf {
    public  void run(String state) {
        serviceI run = strategyFactory.getBusiness(state);
        run.Business2();
        run.Business1();
    }
}

策略工厂类

package day0127.ifelseOptimization;

import lombok.NoArgsConstructor;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author: Braylon
 * @Date: 2020/1/26 21:44
 * @Version: 1.0
 */
public class strategyFactory {

    private static Map<String, serviceI> map = new HashMap<>();

    private static final serviceI EMPITY = new EMPITYMethod();

    private strategyFactory() {}

    public static serviceI getBusiness(String state) {
        serviceI result = map.get(state);
        return result == null ? EMPITY : result;
    }

    public static void register(String state, serviceI I) {
        map.put(state, I);
    }

    private static class EMPITYMethod implements serviceI {
        @Override
        public void Business1() {

        }

        @Override
        public void Business2() {

        }
    }
}

test

package day0127.ifelseOptimization;


import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * @Author: Braylon
 * @Date: 2020/1/26 22:05
 * @Version: 1.0
 */
public class test {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(conf.class);
        conf bean = context.getBean(conf.class);
        bean.run("01");
    }
}
发布了31 篇原创文章 · 获赞 33 · 访问量 2828

猜你喜欢

转载自blog.csdn.net/qq_40742298/article/details/104092027