Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么时候不应该使用';建筑商设计模式';创建对象?_Java - Fatal编程技术网

Java 什么时候不应该使用';建筑商设计模式';创建对象?

Java 什么时候不应该使用';建筑商设计模式';创建对象?,java,Java,我只是好奇是否有任何时候你不会使用“构建器设计模式”来创建对象。构建器设计模式用于逐步从简单对象创建复杂对象。如果情况并非如此,则不应使用生成器设计模式我建议在构建对象时需要所有字段时不要使用生成器。在这种情况下,使用一个简单的构造函数可能就足够了,除非您看到其他一些适用的创建模式,例如工厂或单例 构建器也会影响分发的大小。当您不需要大量的类时,尤其是在分发库时,您可以选择不使用该模式 使用构建器模式创建对象也可以被其他语言或lambda(Java8中的一个特性)所取代。如果您更喜欢使用这些工具

我只是好奇是否有任何时候你不会使用“构建器设计模式”来创建对象。

构建器设计模式用于逐步从简单对象创建复杂对象。如果情况并非如此,则不应使用生成器设计模式

我建议在构建对象时需要所有字段时不要使用生成器。在这种情况下,使用一个简单的构造函数可能就足够了,除非您看到其他一些适用的创建模式,例如工厂或单例

构建器也会影响分发的大小。当您不需要大量的类时,尤其是在分发库时,您可以选择不使用该模式


使用构建器模式创建对象也可以被其他语言或lambda(Java8中的一个特性)所取代。如果您更喜欢使用这些工具,那么您可以不使用构建器。

您读过吗?据我所知,当您试图创建的对象基于
接口时,构建器并不适合。也就是说,实际实现在运行时是未知的,那么您将使用factory@JoshM谢谢,我读了《有效的Java》一书。我唯一不太明白的是‘因为工厂可以用来创建同一接口的不同实现’@JoshM@MadProgrammer谢谢,我想我一直在使用工厂设计模式,但没有意识到它被称为。通常情况下,我使用
Enum
和重写方法。