我想将Web服务URL请求表示为一个对象,并发现有许多常见参数可以在继承层次结构中“上升”。 请求可能有许多参数,一些是必需的,其他是可选的。对此,我认为Bloch的Builder模式是一个不错的选择,它使用流畅接口来模拟命名参数。 具体而言,我正在设计适用于Google Maps Web服...
模板模式在基类中提供算法,其步骤可以在派生类中进行修改。 在生成器模式中,具体生成器公开了从Director类调用的构建产品的方法。 我知道使用这些模式的目的有所不同。模板模式是一种行为模式,它更改模板中的一个或多个步骤,而生成器模式是一种创建模式。 除了上述差异之外,还有其他差异吗? ...
我有很多使用Lombok构建器的类,其中包含@NonNull字段。@Builder class SomeObject { @NonNull String mandatoryField1; @NonNull String mandatoryField2; Integer ...
背景: 我在JavaWorld上找到了这篇文章,Allen Holub在其中解释了一种替代Getter / Setter的方法,该方法保持了对象实现应该被隐藏的原则(他的示例代码也可以在下面找到)。 据解释,类Name / EmployeeId / Money应该有一个接受单个字符串的构造...
什么是在“深层”对象层次结构中使用Builder模式的最佳实践?更具体地说,我探索了Joshua Bloch提出的Builder模式,并将其应用于我的XML绑定代码(我正在使用SimpleXML,但此问题适用于任何情况)。我的对象层次结构有4个层级,复杂程度各不相同。我的意思是,在某些层面上,...
我正在使用Lombok的@Builder注解,但我希望其中一些String字段是可选的,并默认为"",以避免空指针异常。有什么简单的方法可以做到这一点吗?我找不到任何相关信息。 或者,如果变量为null,一种自定义@Getter返回默认值的方法。
《Effective Java》一书中介绍了建造者模式,可以用于构建具有多个可选自定义参数的对象。 他建议为建造者函数采用的命名约定“模拟了Ada和Python中发现的命名可选参数”,似乎不符合Java标准的命名约定。Java函数倾向于以动词开头,然后是一个以名词短语描述其作用的形式。而建造者...
我有一个情况,在其中使用了构建器模式来构建一个对象。最好的例子是给出披萨代码。public class Pizza { private int size; private boolean cheese; private boolean pepperoni; private bo...
以下哪种方法是实现建造者模式的更好方法? 1) 使用对象来构建,而不是在建造者中使用所有属性(并在建造者构造函数中创建它):public class Person { private String firstName; // other properties ... ...
如果举个例子,我已经建立了一个构造器,这样我就可以像这样创建对象:Node node = NodeBuilder() .withName(someName) .withDescription(someDesc) .with...