这个类是否是一个valueobject?

时间:2012-10-08 15:48:14

标签: validation domain-driven-design

我已经定义了类,例如Email,Url,Alphabet,Number和...,只是为了集中每个对象所需的验证逻辑,例如:

public class Email
{
    private string value;
    private bool isValid;

    const string RegexPattern = @"^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$";


        public Email(string address, int minLength = 8, int maxLength = 50)
        {
            value = address;

            isValid = Validator.IsValid(address,RegexPattern,minLength,maxLength);
        }

        public string Address
        {
            get
            {
                return value;
            }
        }

        public bool IsValid
        {
            get
            {
                return isValid;
            }
        }


}

这可以被称为价值对象吗?如果不是它缺少什么?

1 个答案:

答案 0 :(得分:1)

实现是我期望的值对象。它是不可变的(尽管您可能希望在字段上添加readonly修饰符)并且似乎没有自己的标识。

您需要考虑它是否确实是一个取决于域的值对象 - 这就是您决定这是否应该是值对象的方式。