专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

设计模式---行为型(排除过多的if-else,无需反射和注解的实现方式)

1、定义一个父类 interface

public interface IntefaceObj {

    Object todo(Object obj);
}

2、两个IntefaceObj 的实现类 实现各自的逻辑,并提供一个获取实例的单例方法

public class ObjA implements IntefaceObj{

    private static ObjA objA = null;

    @Override
    public Object todo(Object obj) {
        //此处执行A的业务逻辑
        System.out.println("this is A");
        return null;
    }

    public static ObjA getInstance() {
        if (objA == null) {
            synchronized (ObjA.class) {
                objA = new ObjA();
            }
        }
        return objA;
    }
}
public class ObjB implements IntefaceObj{

    private static ObjB objB = null;

    @Override
    public Object todo(Object obj) {
        //此处执行B的业务逻辑
        System.out.println("this is B");

        return null;
    }

    public static ObjB getInstance() {
        if (objB == null) {
            synchronized (ObjB.class) {
                objB = new ObjB();
            }
        }
        return objB;
    }
}

3、定义一个枚举 通过不同的类型获取不同的对象实例

public enum ApplyEnum {

    OPT_A("typeA",ObjA.getInstance()),
    OPT_B("typeB",ObjB.getInstance());

    private String code;
    private IntefaceObj option;

    ApplyEnum(String code, IntefaceObj option) {
        this.code = code;
        this.option = option;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public IntefaceObj getOption() {
        return option;
    }

    public void setOption(IntefaceObj option) {
        this.option = option;
    }

    public static IntefaceObj getOpt(String code){
        for (ApplyEnum value : ApplyEnum.values()) {
            if(value.getCode().equals(code)){
                return value.getOption();
            }
        }
        return null;
    }
}

4、测试

public class JunitTest {

    public static void main(String[] args) {

        test("typeA");

        test("typeB");

        System.out.println(1);
    }

    public static void test(String type){

        IntefaceObj opt = ApplyEnum.getOpt(type);

        if(Objects.isNull(opt)){
            System.out.println("opt is null");
            return;
        }
        Object res = opt.todo("参数");
    }

}

文章永久链接:https://tech.souyunku.com/25069

未经允许不得转载:搜云库技术团队 » 设计模式---行为型(排除过多的if-else,无需反射和注解的实现方式)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们