gpt4 book ai didi

java - 构建器模式何时比继承和多重实现更可取?

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

什么时候使用构建器模式有意义,例如:

private static final Foo FOO1 = Foo.Builder().setX(...).setY(...).setZ(...).build();
private static final Foo FOO2 = Foo.Builder().setX(...).setY(...).setZ(...).build();
private static final Foo FOO3 = Foo.Builder().setX(...).setY(...).setZ(...).build();
... x100 ...

VS类似

public class MyFoos {
public static class Foo1 implements Foo {
public String getX() {...}
public String getY() {...}
public String getZ() {...}
}

public static class Foo2 implements Foo {
public String getX() {...}
public String getY() {...}
public String getZ() {...}
}

public static class Foo3 implements Foo {
public String getX() {...}
public String getY() {...}
public String getZ() {...}
}
... x100...
}

Foo 的复杂程度重要吗?例如,假设我们使用 Foo.Builder(),我们可能需要调用如下内容:

Foo.Builder().setSpecialFunction(new Function() {...})

其中 Function 类似于 http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Function.html

这是否表明构建器模式不适合这种情况?如果没有,什么会更好?谢谢!

最佳答案

第二个设计选择很糟糕——不要滥用继承。当构造函数中的参数数量超过某个常量(比如 4,根据 Bloch 的说法)时,适合使用构建器模式(根据 Bloch 的“Effective Java”)。

关于java - 构建器模式何时比继承和多重实现更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11433942/

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