0

我已经定义了诸如 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;
            }
        }


}

这可以称为价值对象吗?如果不是它缺少的东西?

4

1 回答 1

1

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

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

于 2012-10-08T15:52:05.540 回答