我在软件开发方面非常新。我个人认为,分层体系结构是一种很好的方法,可以减少面向对象方法中软件开发过程中出现的复杂性,更不用说保持代码的有序性。现在,我遇到了一些DDD(Domain Driven Design)引入的问题。当然,初级水平的
这是 -
让我们说,我想构建一个应用程序来保存数据库中的“人”相关数据,并在wpf数据网格中显示人员详细信息(DDD绝对不适合这种规模的应用程序,但只是为了像我这样的业余爱好者保持简单) 。所以,我设计了一个域类“Person”,比如 -
public class Person
{
public Person(dataType paramA, dataType paramB)
{
_fieldA = paramA;
_fieldB = paramB;
}
private dataType _fieldA;
public dataType PropertyA
{
//encapsulates _fieldA
}
private dataType _fieldB;
public dataType PropertyB
{
//encapsulates _fieldB
}
public dataType PropertyX
{
//some code based on private fields
}
public dataType PropertyY
{
//some code based on private fields
}
private dataType MethodPQR(dataType param)
{
//some code
}
public dataType MethodUVW(dataType paramOne, dataType paramTwo)
{
//some code
}
}
现在,我对DDD的理解说,架构(最简单的版本)应该如下(如果我错了,请纠正我) -
注意:
我希望将datagrid绑定到某个ObservableCollection,只是为了立即反映任何类型的更改。
这是一个wpf应用程序,但不一定是MVVM模式,我故意想使用后面的代码(我不知道背后的代码是否代表应用程序层)
所以我的问题是 -
应用层应属于哪种代码?
我的猜测是,我绝对不应该将我的域对象(Person)的ObservableColletion绑定为datagrid的itmsSource。那么我应该从域对象中提取什么类型的对象,以及如何?
为了保持表示层对象和域层对象之间的解耦,可能会有像“never instantiate domain objects directly in presentation layer”
之类的约定。那么非“直接”方法是什么?
如果Code-Behind与应用层进行对话,那么应用层应该与存储库进行通信吗?但是,如果需要某种类型的域访问,而不数据访问相关(可能不在此应用程序中,但它可能会发生,对吧?)域应用层中的那个X人是谁应该和谁谈谈?
我知道我的所有问题和问题都属于业余水平。但它们确实是问题和问题。所以,如果有人有时间,我们将不胜感激。
编辑:我不确定Data Repository是否应该有域模型的引用。
答案 0 :(得分:38)