Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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 构建器模式:为什么许多示例实现与GOF图不同?_Java_Design Patterns - Fatal编程技术网

Java 构建器模式:为什么许多示例实现与GOF图不同?

Java 构建器模式:为什么许多示例实现与GOF图不同?,java,design-patterns,Java,Design Patterns,在前面的一篇文章中,有人建议将其作为Builder设计模式的一个示例,但是它与四人帮描述的版本有很大的不同,而且他们描述的设计模式似乎更像以下内容: 这些都是构建器设计模式的示例吗?如果是,它们之间的共同点是什么 还有,导演身上的钻石是为了什么?这是否意味着一个混凝土建筑商或多个混凝土建筑商的组合?实现可能会有所不同,但一般来说,它们遵循相同的方法 您可能知道,Builder模式可以与药物配方并置-例如,医生可以在单个配方中添加越来越多的药物配方,最后,准备好后,给您完整的配方 当用构建器模式

在前面的一篇文章中,有人建议将其作为Builder设计模式的一个示例,但是它与四人帮描述的版本有很大的不同,而且他们描述的设计模式似乎更像以下内容:

这些都是构建器设计模式的示例吗?如果是,它们之间的共同点是什么


还有,导演身上的钻石是为了什么?这是否意味着一个混凝土建筑商或多个混凝土建筑商的组合?

实现可能会有所不同,但一般来说,它们遵循相同的方法

您可能知道,
Builder
模式可以与药物配方并置-例如,医生可以在单个配方中添加越来越多的药物配方,最后,准备好后,给您完整的配方

当用构建器模式构建对象时,我们会做一些类似的事情——调用方法,这些方法作为如何构建对象的指示,当我们准备好时,我们会用一个终端方法获取对象,例如称为
build()

构建器实现的另一个示例是类,它是Java8中流API的一部分

它的工作方式非常相似-您可以根据提供的标准列表,在
上调用所需的所有非终端操作,并最终获得一个构建的
。例如:

List<String> names = Arrays.asList("John", "Peter", "Stephen");
//Let's build a Stream, which will give a list of the sizes of each of our names
List<Integer> namesSizes = names
                          .stream()
                          .map(name -> name.length())
                          .collect(Collectors.toList()); //terminal operation
List name=Arrays.asList(“约翰”、“彼得”、“斯蒂芬”);
//让我们构建一个流,它将给出每个名称的大小列表
列表名称大小=名称
.stream()
.map(名称->名称.length())
.collect(Collectors.toList())//终端操作
更多信息:


    • 我对此也相当困惑。就我的理解而言,很多“构建器设计模式”的例子都是基于;这可以看作是GoF构建器模式的简化。当构造具体对象的方法太多时,Bloch的实现目标似乎是引入简单性,或者具体对象表示自身的方式略有不同,从而导致太多具有类似类型参数的构造函数,例如:具有可选和强制性属性。(伸缩式构造器的反模式使用Bloch的builder模式解决)


      GoF通过“主管”对整个创作过程有另一个间接层次的指导,以封装关于制作产品所需步骤的知识-这种创作算法在所有产品中都很常见-以及一个接口/基类来表示必要的构建者接口(合同)知道如何做每一步的人。每个构建器实现都会返回自己的具体产品。

      我要问的正是关于“”的帖子。。。具体来说,生成器模式有两种形式吗?因为他在那篇文章中给出的构建器示例——在互联网上——似乎很多人将不同的实现归因于构建器模式,并将其称为BuilderAs——据我所知,一般来说,没有——构建器模式只有一种形式。另一种形式可能不符合模式的属性——例如,如果构造的对象不是不可变的