gpt4 book ai didi

java - 使用枚举的工厂

转载 作者:行者123 更新时间:2023-12-01 17:02:50 25 4
gpt4 key购买 nike

假设我们有一个带有私有(private) map 的工厂

clas Factory {
EnumMap<Color, SomeInterface> map;
Enum Color {
FOO,
BAR
}
}

并且希望公开获取实现 SomeInterface 的对象的可能性

SomeInterface get(Color color)

或为每种颜色实现单独的方法

SomeInterface getFoo();
SomeInterface getBar();

应该将其实现为单次获取还是乘法?

最佳答案

枚举可以实现接口(interface)。这样你就不需要工厂了。这样你就不需要 map 了。这样你就不需要 getter 方法了。

foo 和 bar 都不是颜色,同样为了枚举颜色,有些人可能会提到,还有比只有两种颜色更多的颜色。 SomeInterface 并不是一个接口(interface)的口头名称。工厂类的构造方法不应命名为get,而应命名为create 或construct。

使用第一种方法还是第二种方法?由于您确实可以在它们之间进行选择,因此看起来 get(Color) 可以自行处理 getFoogetBar 所做的所有工作。这表明 getFoogetBar 看起来非常相似。假设除了 foo 和 bar 之外我们还有 30 种以上的颜色,那么我们将为这 30 种以上的颜色提供 30 种以上的 getter。由于 getFoogetBar 看起来很相似,所以其他 30 个 getter 也看起来很相似。这将导致开发人员提出一个问题:我应该重复一遍吗?有一个原则就是不要重复自己(DRY)。尊重“不要重复自己(DRY)”的原则引导我们更喜欢第一种方法,而不是第二种方法。

关于java - 使用枚举的工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61489723/

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