代码之家  ›  专栏  ›  技术社区  ›  perkss

UUID是否应在POJO构建时传入或生成?

  •  1
  • perkss  · 技术社区  · 9 年前

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

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

    还是有一个通用模式用于此?

    1 回复  |  直到 9 年前
        1
  •  4
  •   biziclop    9 年前

    我肯定会有一个接受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);
        }
     }
    

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