函数式编程解决代码中百分之90的if else

废话不多说,上代码》
BranchHandle

package com.design.designdemo.func;

@FunctionalInterface
public interface BranchHandle {
    void trueOrFalseHandle(Runnable trueHandle, Runnable falseHandle);
}

package com.design.designdemo.func;

import java.util.function.Consumer;

public interface PresentOrElseHandler<T extends Object> {

    void presentOrElseHandle(Consumer<? super T> action, Runnable emptyAction);
    
}

package com.design.designdemo.func;

@FunctionalInterface
public interface TrueHandler {

    void trueHandle(Runnable trueHandle);
    
}

package com.design.designdemo.func;

import com.xiao.it.api.error.ErrorCode;

/**
 * @Description FuncUtil
 * @Author fuhao
 * @CreateTime 2024/8/21 19:11
 */
public class FuncUtil {

    public static BranchHandle isTureOrFalse(boolean b){
        return (trueHandle, falseHandle) -> {
            if (b){
                trueHandle.run();
            } else {
                falseHandle.run();
            }
        };
    }


    public static TrueHandler trueHandler(boolean b){
        return (trueHandle) -> {
            if (b){
                trueHandle.run();
            }
        };
    }

    // 静态方法,用于在条件为 true 时抛出异常
    public static void throwIfTrue(boolean condition, ErrorCode errorCode) {
        if (condition) {
            throw new BizException(errorCode);
        }
    }
}

package com.design.designdemo.func;

import com.design.designdemo.exception.CustomErrorCodes;
import com.xiao.it.api.error.ErrorCode;

/**
 * @Description FuncDemo
 * @Author fuhao
 * @CreateTime 2024/9/4 19:38
 */
public class FuncDemo {

    public static void main(String[] args) {
//        List<AuditLog> auditLogs = auditLogList.stream().sorted(Comparator.comparing(AuditLog::getCreateTime,
//                Comparator.nullsFirst(Comparator.naturalOrder())).reversed()).collect(Collectors.toList());
        boolean booleanResult = false;

        FuncUtil.isTureOrFalse(booleanResult).trueOrFalseHandle(() -> {
            // todo
            System.out.println("if true 执行了");
        },() -> {
            //无操作
            System.out.println("if true 不通过 为false 执行了");
        });

        boolean tureHandler = true;
        FuncUtil.trueHandler(tureHandler).trueHandle(() -> {
            System.out.println("---tureHandler--");
        });

        // 示例用法
        boolean condition = true; // 这是一个示例条件
        ErrorCode errorCode = CustomErrorCodes.CUSTOM_ERROR1;
        // 使用工具类方法
        FuncUtil.throwIfTrue(condition, errorCode);
    }    
}

public class ErrorCodeBase {
    private static Map<String, ErrorCode> nameToErrors = new HashMap();
    private static Map<Integer, ErrorCode> codeToErrors = new HashMap();

    public ErrorCodeBase() {
    }

    protected static void addErrorMessageResource(String resourceName) {
        I18n.addResource(resourceName);
    }

    protected static ErrorCode register(int code, String name) {
        ErrorCode errorCode = new ErrorCode(code, name);
        if (nameToErrors.containsKey(name)) {
            throw new IllegalArgumentException("duplicate error name: " + name);
        } else if (codeToErrors.containsKey(code)) {
            throw new IllegalArgumentException("duplicate error code: " + code);
        } else {
            nameToErrors.put(name, errorCode);
            codeToErrors.put(code, errorCode);
            return errorCode;
        }
    }

    public static List<ErrorCode> getAll() {
        return (List)codeToErrors.values().stream().sorted(Comparator.comparing(ErrorCode::getCode)).collect(Collectors.toList());
    }

    public static String errorMessage(ErrorCode code) {
        return (String)I18n.format(String.valueOf(code.getCode())).orElse(code.getName());
    }

    public static String errorMessage(ErrorCode code, Locale locale) {
        String codeKey = String.valueOf(code.getCode());
        return (String)I18n.format(codeKey, locale).orElse(code.getName());
    }
}
public class ErrorCodes extends ErrorCodeBase {
    public static final ErrorCode OK = register(0, "OK");
    public static final ErrorCode BAD_REQUEST = register(40000000, "BAD_REQUEST");
    public static final ErrorCode BAD_PARAMETER = register(40000001, "BAD_PARAMETER");
    public static final ErrorCode MISSING_PARAMETER = register(40000002, "MISSING_PARAMETER");
    public static final ErrorCode DUPLICATED_PARAMETER = register(40000003, "DUPLICATED_PARAMETER");
    public static final ErrorCode BAD_FORMAT_CONTENT = register(40000004, "BAD_FORMAT_CONTENT");
    public static final ErrorCode GATEWAY_TIMEOUT = register(50400000, "GATEWAY_TIMEOUT");

    public ErrorCodes() {
    }
}
public class CustomErrorCodes extends ErrorCodes {

    /**
     * resources中的配置文件名称前缀
     */
    private static final String RESOURCE_ERROR_MESSAGE_NAME = "errorcode/custom_error_message";

    static {
        addErrorMessageResource(RESOURCE_ERROR_MESSAGE_NAME);
    }

    /**
     * 自定义错误1
     */
    public static final ErrorCode CUSTOM_ERROR1 = register(40099120, "CUSTOM_ERROR1");

    /**
     * 自定义错误2,
     */
    public static final ErrorCode CUSTOM_ERROR2 = register(40099999, "CUSTOM_ERROR2");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值