当前位置: 首页 > 软件库 > 开发工具 > Java开发工具 >

FreeBuilder

Java 的 Builder 模式生成器
授权协议 Apache
开发语言 Java
所属分类 开发工具、 Java开发工具
软件类型 开源软件
地区 不详
投 递 者 闻人博
操作系统 跨平台
开源组织 Google
适用人群 未知
 软件概览

FreeBuilder

为 Java 1.6+ 自动生成 Builder 模式

当设计类的构造函数或静态工厂具有多个参数时,Builder 模式是一个不错的选择。—— Effective Java,第二版,第39页

背景

在 Java 中实现 Builder 模式容易出错和重复。即使是一个简单的四字段类,最基本的构建器 API 需要 39 行代码,如果你不使用像 AutoValue 这样的实用程序来生成值样板,则需要 72 行代码。

使用

import org.inferred.freebuilder.FreeBuilder;

@FreeBuilder
public interface Person {
  /** Returns the person's full (English) name. */
  String name();
  /** Returns the person's age in years, rounded down. */
  int age();
  /** Builder of {@link Person} instances. */
  class Builder extends Person_Builder { }
}

JavaBean convention

如果值类型遵循 JavaBean 命名约定,只需在访问器方法前面加上'get'(或者,布尔访问器是'is')。 FreeBuilder 会跟随,并在 setter 方法上添加“set”前缀,以及从 toString 输出中删除前缀。

@FreeBuilder
public interface Person {
  /** Returns the person's full (English) name. */
  String getName();
  /** Returns the person's age in years, rounded down. */
  int getAge();
  /** Builder of {@link Person} instances. */
  class Builder extends Person_Builder { }
}

Person person = new Person.Builder()
    .setName("Phil")
    .setAge(31)
    .build();
System.out.println(person);  // Person{name=Phil, age=31}
  •           Freebuilder团队成立于2006年,总部位于天津。主要提供面向校园的服务平台。为师生提供良好的信息交流、技术解决方案、技术服务、和网络分发平台,适时推出面向教育网的集视频直播、点播、互动娱乐、无线增值等服务于一体的娱乐服务平台—— freebuild.com网。 

 相关资料
  • 构建器模式使用简单对象并使用逐步方法构建复杂对象。 这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。 Builder类逐步构建最终对象。 此构建器独立于其他对象。 实现 (Implementation) 我们考虑过快餐店的商业案例,其中典型的餐点可以是汉堡包和冷饮。 汉堡可以是蔬菜汉堡或鸡肉汉堡,将由包装纸包装。 冷饮可以是可乐或百事可乐,也可以装在一个瓶子里。 我们将创建

  • 问题 你需要准备一个复杂的、多部分的对象,你希望操作不止一次或有不同的配置。 解决方案 创建一个生成器封装对象的产生过程。 Todo.txt 格式提供了一个先进的但还是纯文本的方法来维护待办事项列表。手工输入每个项目有损耗且容易出错,然而 TodoTxtBuilder 类可以解决我们的麻烦: class TodoTxtBuilder constructor: (defaultParamet

  • 亦称: 建造者模式、Builder 意图 生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。 问题 假设有这样一个复杂对象, 在对其进行构造时需要对诸多成员变量和嵌套对象进行繁复的初始化工作。 这些初始化代码通常深藏于一个包含众多参数且让人基本看不懂的构造函数中; 甚至还有更糟糕的情况, 那就是这些代码散落在客户端代码的多个位置

  • 5. 生成器(Builder) Intent 封装一个对象的构造过程,并允许按步骤构造。 Class Diagram Implementation 以下是一个简易的 StringBuilder 实现,参考了 JDK 1.8 源码。 // java public class AbstractStringBuilder { protected char[] value; protec

  • 在我的客户机代码中,我使用json模式来验证json响应(使用ajv)。我正计划使用pact-js生成pacts,以便对提供者运行以进行契约测试。 我希望我的客户机代码在运行时验证期间使用的模式和契约测试在协议验证期间使用的模式有一个真实的来源。是否有一种方法可以从pact文件生成json(或swagger)模式,或者是否有一个库使用pact文件本身来对单个http响应进行运行时验证(而不是仅仅用

  • 设计模式之Builder Builder模式定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到. 为何使用? 是为了将构建复杂对象的过程和它的部件

  • 问题内容: 有人知道如何从现有的XML模式(XSD文件)生成JSON模式吗?有没有可用的工具? 问题答案: 免责声明 :我是Jsonix的作者,Jsonix是一个功能强大的开源XML <-> JSON JavaScript映射库。 今天,我发布了具有新JSON Schema生成功能的新版本的Jsonix Schema Compiler 。 让我们以采购订单模式为例。这是一个片段: 您可以使用提供的

  • 本文向大家介绍生成式模型、判别式模型相关面试题,主要包含被问及生成式模型、判别式模型时的应答技巧和注意事项,需要的朋友参考一下 https://github.com/imhuay/Algorithm_Interview_Notes-Chinese/blob/master/A-机器学习/A-机器学习基础.md#生成模型与判别模型 生成式模型(generative model)会对x和y的联合分布p(