Domain driven design DDD:管理和封装

Domain driven design DDD:管理和封装,domain-driven-design,administration,Domain Driven Design,Administration,在更改实体属性值而不破坏封装的情况下,您如何处理管理面板与域的通信 public class Book : Entity { public Book(string title, string author, string description, decimal price, short publicationYear) { Title = title; Author = author; Description = descriptio

在更改实体属性值而不破坏封装的情况下,您如何处理管理面板与域的通信

public class Book : Entity {

    public Book(string title, string author, string description, decimal price, short publicationYear) {

        Title = title;
        Author = author;
        Description = description;
        Price = price;
        PublicationYear = publicationYear;
    }

    public string Title { get; private set; }

    public string Author { get; private set; }

    public string Description { get; private set; }

    public decimal Price { get; private set; }

    public short PublicationYear { get; private set; }
}

不破坏封装的唯一方法是将表示逻辑的某些部分包含到对象本身中。记住,不是细节,而是与这个物体高度耦合的部分

我会这样做(伪代码):

公共课堂教材{
公共书籍(……){
...
}
公共InputComponent createAdminView(){
返回新表单组(
新文本输入(标题),
新文本输入(作者),
...);
}
}
这样,就不需要发布对象的任何内部数据字段,也不需要知道如何进行预订,所有与对象相关的更改都将本地化


事实上,我已经这样做了好几年了,这种设计使得代码更易于维护。请看我关于面向对象的域驱动设计的演示,了解更多信息:

你的意思是什么?我的意思是,为了替换实体的值,你为管理面板公开了什么?管理面板不遵循相同的业务规则?因此,应用程序的其他部分具有相同的操作实体数据的能力就像管理面板是一种合适的方法一样?@MrBimber55封装只是隐藏了消费者不需要看到的细节。由于没有更多关于该领域的信息,很难说出消费者需要了解的关于
书籍的任何信息。据我们所知,您当前的设计在封装方面可能是完美的。