gpt4 book ai didi

java - 相同的计算流程,但功能不同

转载 作者:行者123 更新时间:2023-11-30 06:39:03 25 4
gpt4 key购买 nike

最近我根据项目需要编写了一小段代码,代码运行良好......

下面的代码是通用版本......

if (someConditionX)
{
if (Utils.nullOrEmpty(string1))
{
Config config = getConfig();

if (config != null)
{
doA();
}
}
else
{
doB();
}

if (Utils.nullOrEmpty(string2))
{
Config config = getConfig();

if (config != null)
{
doC();
}
}
else
{
doD();
}
}
else if (someConditionY)
{
if (Utils.nullOrEmpty(string1))
{
Config config = getConfig();

if (config != null)
{
doE();
}
}
else
{
doF();
}

if (Utils.nullOrEmpty(string2))
{
Config config = getConfig();

if (config != null)
{
doG();
}
}
else
{
doH();
}
}

我不相信它的编写方式,我觉得还有改进的余地......

请给我一些建议以使其变得更好...是否有使用 lambda 的范围??.........

最佳答案

你可以制作一个像这样的界面:

interface Do {
void doSometing();
}

实现它:

class DoA implements Do {
void doSometing() {/* do A */}
}

class DoB implements Do {
void doSometing() {/* do B */}
}

(DoC.......DoD......等等)

并通过以下方式使用它:

if (someConditionX)   {
process(string1, new DoA(), new DoB());
process(string2, new DoC(), new DoD());
}

其中流程定义为:

void process(String string, Do doA, Do doB) {

if(nullOrEmpty(string)){
if (getConfig() != null) {doA.doSometing(); }
}else {
doB.doSometing();
}
}

对于使用Lambda表达式,可以使用Lambda实现接口(interface):
process(string1, ()->{/* 实现 doSomething */;}, new DoB());

关于java - 相同的计算流程,但功能不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44714467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com