builder-pattern相关内容

Python 中等效的构建器模式

在 Java 中,您可以使用 构建器模式 提供一种更具可读性的方法来实例化具有许多参数的类.在构建器模式中,使用设置命名属性的方法构造一个配置对象,然后使用它来构造另一个对象. Python 中的等价物是什么?是模仿相同实现的最佳方式吗? 解决方案 设计模式通常可以用内置的语言功能替换. 您的用例 您说“我想要一个更具可读性的“手段";实例化一个具有许多参数的类.".在 ..
发布时间:2021-12-22 09:09:09 Python

带有嵌套对象的构建器模式

嗨,我遇到了一个问题. 我想实现构建器模式,以便更轻松地创建对象.我面临的问题与嵌套对象有关.我想创建的对象有一个其他对象的列表,我真的不知道如何解决它. 我希望能够执行以下操作(例如更简单的对象): Receipt RestaurantReceipt = new ReceiptBuilder().withDate("值").withName("值").AddItem("值").Wi ..
发布时间:2021-12-22 09:02:44 C#/.NET

将构建器保留在单独的类中(流畅的界面)

Foo foo = Foo.builder().setColor(红色).setName("弗雷德").setSize(42).建造(); 所以我知道有以下“Builder"解决方案用于在调用方法时创建命名参数.虽然,这似乎只适用于作为构建器的内部静态类,还是我错了?我查看了一些关于构建器模式的教程,但对于我尝试做的事情来说,它们似乎非常复杂.有没有什么办法可以让 Foo 类和 Builder ..
发布时间:2021-12-22 08:56:43 Java开发

如何改进构建器模式?

动机 最近我在寻找一种方法来初始化一个复杂的对象,而无需向构造函数传递大量参数.我用构建器模式尝试过它,但我不喜欢这样一个事实,即我无法在编译时检查我是否真的设置了所有需要的值. 传统构建器模式 当我使用构建器模式创建我的 Complex 对象时,创建更“类型安全",因为更容易看到参数的用途: new ComplexBuilder().setFirst("第一个").setSe ..
发布时间:2021-12-22 08:53:46 Java开发

建造者设计模式和工厂设计模式有什么区别?

Builder 设计模式和 Factory 设计模式有什么区别? 哪个更有利,为什么? 如果我想测试和比较/对比这些模式,如何将我的发现表示为图表? 解决方案 对于设计模式,通常没有“更有利"的解决方案适用于所有情况.这取决于您需要实施什么. 来自维基百科: Builder 专注于构建一个复杂的对象一步一步.抽象的工厂强调产品家族对象(简单的或复杂的).Builde ..

Effective Java 中的建造者模式

我最近开始阅读 Joshua Bloch 的 Effective Java.我发现 Builder 模式 [本书中的第 2 项] 的想法非常有趣.我试图在我的项目中实现它,但出现编译错误.以下是我试图做的本质上: 具有多个属性的类及其构建器类: public class NutritionalFacts {私人国际钠;私人脂肪;私人国际碳水化合物;公共类生成器{私人国际钠;私人脂肪;私人国 ..
发布时间:2021-11-25 19:08:48 Java开发

使Bloch的构建器模式成为线程安全的:如果从未失效,则在封闭构造器时需要重新检查吗?

我最近了解到Joshua Bloch的构建器模式,用于创建带有许多可选字段的对象.多年来,我一直在使用类似的东西,但是直到Bloch的书向我推荐它之前,我从未使用过内部类.我喜欢它. 我了解到另一个线程可能会在实际构建bulider之前更改其配置(使用 build()),因此可能有必要重新验证封闭构造函数中的所有值班级.下面是一个生成器类的示例,该类可以有选择地重新验证其数据. 所以我 ..
发布时间:2021-05-16 18:35:35 Java开发

如果未传递默认值,如何在构建器模式中使用默认值,并使线程安全?

我正在尝试为班级使用Builder模式. 下面是我按照约书亚·布洛赫(Joshua Bloch)在有效Java(第二版)中显示的版本构建的Builder类.我们的客户通常总是总是通过 userId , clientId ,但是其他字段是可选的,他们可能会也可能不会通过.这里的Preference是一个ENUM类,其中有四个字段. 公共最终类InputKeys {私人长用户ID;私人长客户I ..
发布时间:2021-05-15 20:45:20 Java开发

如何使用构建器模式构建嵌套列表?

我正在尝试通过使用构建器模式为GraphQL语法创建查询构建器.我已经在过滤部分做到了: 我想以编程方式找到一种方法,说出我想从查询中获取哪些数据. (注意:在查询的title部分被硬编码到QueryBuilder中之前. 为此,我制作了一个名为Entity的类,该类具有一个自身列表作为属性. class Entity( private val entity: E ..
发布时间:2021-02-15 19:48:27 其他开发

是否可以在kotlin中使用unaryPlus调用函数?

这是我昨天问的另一个问题的后续问题. 如何使用构建器构建嵌套列表模式? 由于提供了很好的答案,请致谢:佩洛乔. 我使用本教程进行类型安全的graphQL查询建造者: 我现在想做的就是简化我所做的事情 而且我知道kotlin必须具有一些不错的功能才能做到这一点. 现在,当我想向查询中添加实体时,我必须调用函数: fun main() { events{ ..
发布时间:2021-02-15 19:44:52 其他开发

使用私有变量的Javascript构建器模式

我试图在Javascript中创建一个使用私有变量的构建器模式,同时提供一个公共访问器( fullName ),该访问器返回所有其他属性的混搭。 这个问题和答案表明我可以在人员构造函数中使用 Object.defineProperty 来访问私有变量,但这不起作用- instance.fullName 始终为未定义。 我该如何工作,以使构建器模式变量保持私有,但是公共访问者可以在整个构建链中 ..
发布时间:2020-06-07 18:49:55 前端开发

使用构建器模式最多设置一次值

在使用生成器模式时,Java中是否存在标准做法,以确保最多设置一次成员变量。我需要确保设置器被调用0或1次,但再也不能调用更多次。我想抛出某种 RuntimeException ,但是我担心同步问题以及这方面的最佳实践。 解决方案 如果用户以类似非法的方式调用方法,则引发异常不会出现错误可以描述,但并不十分优雅。构建器模式背后的想法是让用户编写流利的,可读的对象定义,而编译时安全是其中的重 ..
发布时间:2020-06-07 18:49:52 Java开发

Build Pattern Intellij警告:永远不会使用该方法的返回值

我实现了一个简单的构建器模式-下面的代码。代码会执行并运行,但是builder类中的每个“ with ..”方法都会显示警告,提示“从未使用过该方法的返回值” 公共静态类StreamParserBuilder { //可选-具有默认值: private long spanLimit1 = 2000L; 私人长跨度Limit2 = 100000L; private long span ..
发布时间:2020-06-07 18:49:50 Java开发

处理对象字段验证的最佳方法=>要么/试试(scala 2.10)/ ValidationNEL(scalaz)

我们假设使用构建器模式构建对象。 此构建器模式将包含一个 build 方法 此验证可以使用以下方式实现: 要么[FailureObject,TargetObject] 类型 Try [TargetObject] (Scala 2.10的新功能) Validation [FailureObject,TargetObject] 或 ValidationNEL [ scalaz库中 ..
发布时间:2020-06-07 18:49:45 其他开发

Java通用生成器

假设我需要一些 DerivedBuilder 来扩展一些 BaseBuilder 。基本生成器具有类似 foo 的方法(该方法返回 BaseBuilder )。派生的构建器具有方法 bar 。方法 bar 应该在方法 foo 之后调用。为此,我可以在 DerivedBuilder 中重写 foo 方法,如下所示: @Override public DerivedBuilder foo( ..
发布时间:2020-06-07 18:49:43 Java开发

我应该在DTO中使用构建器模式吗?

这可能是一个相当含糊的问题,但我想知道更多意见。我已经使用Spring MVC构建了Rest API服务,并且实现了DTO-Domain-Entity模式。我想知道您对在DTO中实现 Builder模式的看法,例如 公共类UserResponseDTO 扩展AbstractResponseDTO { 私有字符串用户名; 私有布尔值已启用; public UserRespons ..

如何在Rust中使用链接的方法调用编写惯用的构建模式?

根据以下示例,可以在Rust中编写一个带有链式方法调用的构建模式,该方法可以按值或按引用传递(带有生命周期说明符) 是否可以创建一个宏来实现构建器模式方法? 如何重载“新”方法?(最佳答案) https://github.com/rust-unofficial /patterns/blob/master/patterns/builder.md Rust中的构建器模式可能看起来像这样 ..
发布时间:2020-06-07 18:49:37 其他开发

如何在ModelInput类中使用Joshua Bloch版本描述的Builder模式?

我试图在下面的类中使用Builder模式。最初,我使用类的构造函数来设置所有参数,但是偶然地我碰到了Builder模式,这对我的用例来说很好。 下面是我的课程,在该课程中,人们通常会通过 userId , clientId 和 parameterMap 总是,但是其他字段是可选的,它们可能会也可能不会通过。而且,如果他们没有传递任何超时值,我需要将默认超时值始终设置为500,但是如果他们传递 ..
发布时间:2020-06-07 18:49:32 Java开发