自学内容网 自学内容网

第五章 if语句优化之工厂策略模式+Supplier接口(四)

目录

一、引言

二、问题代码

三、优化后的代码


一、引言

我们在实际项目开发中,一定会充斥着大量这种if elseif的等号条件判断语句,这种写法我们称之为流水账。随着后续判断条件逐步递增,执行体的业务功能越来越复杂、代码量越来越多时,包含该if elseif条件的方法体的代码行数将为每日递增,造成非常难以维护的局面,代码的可读性也会变得非常差。 

二、问题代码

package com.wzx;

public class Test {
    public static void main(String[] args) {
        int x = 1;
        if (x == 1) {
            System.out.println("X3");
        } else if (x == 2) {
            System.out.println("X2");
        } else {
            System.out.println("X3");
        }
    }
}


三、优化后的代码

我们通过Supplier函数式接口+工厂类+Optional组合形式来优化上述代码:

package com.wzx;

public class X1Strategy implements XInterface {

    @Override
    public void print() {
        System.out.println("X1");
    }
}
package com.wzx;

public class X2Strategy implements XInterface {
    @Override
    public void print() {
        System.out.println("X2");
    }
}
package com.wzx;

public class X3Strategy implements XInterface {
    @Override
    public void print() {
        System.out.println("X3");
    }
}
package com.wzx;

public interface XInterface {
    void print();
}
package com.wzx;

import java.util.Map;
import java.util.Optional;
import java.util.function.Supplier;

public class Test {
    public static void main(String[] args) {
        Map<Integer, Supplier<XInterface>> factories = Map.of(
                1, X1Strategy::new,
                2, X2Strategy::new
        );
        Supplier<XInterface> x = Optional.ofNullable(factories.get(1)).orElseGet(() -> X3Strategy::new);
        x.get().print();
    }
}


原文地址:https://blog.csdn.net/qushaming/article/details/144069610

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!