第五章 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)!