说我有这个简单的课程
public class MyEntity
{
public DateTime DateUpdated { get; private set; }
public string Author { get; private set; }
public string Comment { get; private set; }
public void AddComment(string comment, string author)
{
Author = author;
Comment = comment;
DateUpdated = DateTime.Now;
}
}
我已将 setter 设为私有以封装类,并添加了 AddComment 方法以向我的类添加一些行为。这在创建新对象时工作得非常好,但是当我想从数据库加载实体时,DateUpdated 当然设置为我想避免的当前日期。
是否有任何模式可以用来避免公开 DateUpdated 设置器,因为这似乎破坏了我的良好封装并弄乱了类的干净接口?当然,这个类只是一个更一般的问题的例子。
在不创建更多公共构造函数的情况下,我现在最接近的是创建一个私有构造函数,我通过公共静态方法访问它。