gpt4 book ai didi

java - 如何使用 lambda 表达式重构工厂类?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:59 25 4
gpt4 key购买 nike

<分区>

一个常见的用例是定义某种工厂类:

public abstract class IFactory {
public abstract Object getObject(String input);
}

一个实现工厂可能应该提供基于输入的对象。

例如:

public class FactoryImpl {
private static instance = null;

public IFactory instance() {
if (instance == null) {
return new IFactory() {
@Override
public Object getObject(String input) {
return new Object(); //based on input data in real
}
};
}
}
}

这很麻烦,所以我想用 lambda 表达式重构代码。但首选方式是什么?

我可以想象以下两种选择:

public class FactoryImpl {
public IFactory instance() {
if (instance == null) {
return (data) -> new Object(); //explicit using new operator
}
}
}

public class FactoryImpl {
public IFactory instance() {
if (instance == null) {
IFactory factory = Object::new;
return (data) -> factory.getObject(); //using method reference
}
}
}

有没有应该首选的方法(例如为了可读性或约定)?

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