值对象静态工厂

Value object static Factory

我现在有一些问题,想知道你的意见。 首先,我有一个 userPassword,它表示我的用户域模型中的一个值对象。我想在创建 userPassword 对象时验证 2 个案例:

出于验证目的,我刚刚在创建密码对象之前做了一些验证。因为我认为它总是与对象构造中定义的验证逻辑相关。 所以这是我的解决方案:

export class UserPassword {
    private readonly value:string

     constructor(value: string) {
        if (value === "") {
            throw new UserInputError("Password must be filled")
        }
        else {
            this.hashPassword(value).then(r => console.log(r))
            this.value =  value
        }
   }
    public getValue():string {
        return this.value
    }

    private async hashPassword(password: string):Promise<string>{
        return bcrypt.hash(password,10)
    }
    async comparePassword(password:string):Promise<boolean> {
        let hashed: string = this.value
        return  bcrypt.compare(password, hashed)
    }
}

是这样的吗? 我的意思是,如果你想非常确定,永远不要在内存中存储密码的明确值

// My static factory in which i want to apply my validations cases

  static async create(password: string):UserPassword {
      if (!password || password.trim().length() == 0) {
           throw Exception("password not valid")
      }
      var hash = await bcrypt.hash(password,10)
      return new UserPassword(hash)
  }