java - 构建POJO时应该传入还是生成UUID?

标签 java dependency-injection uuid

当创建 POJO 时,由于依赖注入(inject),在构造函数中设置任何属性而不传递它们是不好的做法。

如果您将其中一个字段设置为 UUID 值,是否可以接受在构造时生成和设置?还是应该通过构造函数传入?

或者是否有用于此的通用模式?

最佳答案

出于您已经概述的原因,我肯定会有一个接受 UUID 的构造函数。 (和测试。)

不过,我还会添加一个静态工厂方法,它只接受您真正想要在常规代码中从外部设置的值。所以像这样:

public class Foo {
    private final UUID id;
    private final Bar bar;

    Foo(UUID id, Bar bar) {
      this.id = id;
      this.bar = bar;
    }

    public static Foo create(Bar bar) {
        return new Foo(UUID.randomUUID(), bar);
    }
 }

我将构造函数指定为 package-private,这对于测试来说足够宽松(如果您碰巧需要它),并且只留下一种公开可见的方式来创建类的实例。

关于java - 构建POJO时应该传入还是生成UUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35118233/

相关文章:

java - 如何使用ajax向服务器发送json数据

java - MySQL - 希伯来字符成为数据库中的问号

wpf - 如何在 XAML 中注入(inject)转换器

unit-testing - 在 Grails 单元测试中注入(inject)服务

ios - iOS 中的多个主题模式处理

java - Spring Data for ElasticSearch 保存方法即使在更新时也会增加计数(不正确)

java - JSON 响应被分成多行的原因可能是什么?

java - UUID值如何保存在mysql数据库中

url - 是 UUID "URL safe"吗?

java - 如何使用 JDBC getGenerateKeys 获取生成的 UUID 类型?