我对软件开发非常新手。我认为分层架构是降低面向对象软件开发过程中出现的复杂性,同时还能保持代码组织性的好方法。
我有兴趣学习领域驱动设计方法,并且在自我介绍中遇到了一些问题(当然,是初学者级别的)。
它在这里 -
我想建立一个应用程序,将相关人员数据保存在数据库中,并在 WPF DataGrid
中显示个人详细信息(我知道,DDD 绝对不适用于像我这样的业余爱好者的应用程序,但只是为了让事情简单明了)。
因此,我创建了一个类似“Person”的领域类:
public class Person
{
public Person(dataType paramA)
{
this.PropertyA = paramA;
}
private dataType _fieldA;
public dataType PropertyA
{
//encapsulates _fieldA
}
public dataType PropertyX
{
//some code that manipulates private field
}
private dataType MethodPQR(dataType param)
{
//some code
}
}
现在,我对 DDD 的理解是架构(最简单的版本)应该如下所示(如果我错了,请纠正我) -![enter image description here](https://istack.dev59.com/jYvXp.webp)
注: 1. 我希望
DataGrid
能够绑定到一些 ObservableCollection
,以便能够即时反映任何更改。
2. 这是一个 WPF 应用程序,但不一定要符合 MVVM 模式,而且我故意想使用代码后台。我的问题是 - 1. 哪种代码属于
Application Layer
?
2. 我猜我绝对不应该将我域对象(即 Person
)的 ObservableColletion
绑定为 DataGrid
的 ItmsSource
。那么我应该从域对象中提取什么类型的对象呢?如何提取?
3. 为了保持 Presentation Layer
和 Domain Layer
之间的解耦合,可能有一个约定,即“在表示层中不直接实例化域对象”。那么有哪些“非直接”的方法呢?
4. 如果代码后台与 Application Layer
对话,则应该让 Application Layer
与 Data Repository
对话吗?但如果需要一些与数据访问无关的域访问(也许不是在此应用程序中,但这种情况可能发生,对吧?)那么在 Domain Layer
中是谁是那个 X
人(子层/模块),Application Layer
应该与之对话?
我知道我的问题非常业余,但它们确实是从我面临的问题提出的问题。所以,如果有人有时间,任何回答都将受到赞赏。编辑:我不确定
Data Repository
是否应该引用 Domain Model
。