我对软件开发非常陌生。我认为分层架构是减少面向对象软件开发过程中出现的复杂性的好方法,更不用说保持代码的组织性了。
我有兴趣了解领域驱动设计方法,并且我遇到了一些问题来让自己了解它(当然,初学者级别的)。
这里是 -
我想构建一个应用程序来将人员相关数据保存在数据库中并在 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 的理解说架构(它的最简单版本)应该如下(如果我错了,请纠正我) -
笔记:
我希望
DataGrid
绑定到一些ObservableCollection
,以立即反映任何类型的变化。这是一个 WPF 应用程序,但不一定是 MVVM 模式,我故意想使用后面的代码。
我的问题是——
什么样的代码属于
Application Layer
?我的猜测是,我绝对不应该将
ObservableColletion
我的域对象(即Person
)绑定ItmsSource
为DataGrid
. 那么我应该从域对象中提取什么类型的对象,以及如何提取?为了保持两者之间的脱钩
Presentation Layer
,Domain Layer
可能有一个像never instantiate domain objects directly in the presentation layer
. 那有哪些non-direct
方法呢?如果代码隐藏与该对话,
Application Layer
那么应该与该Application Layer
对话Data Repository
吗?但是,如果需要某种与数据访问无关的域访问(可能不在此应用程序中,但可能会发生,对吗?)在那种情况下,应该是谁(子X
层/模块)谈?Domain Layer
Application Layer
我知道我的问题是非常业余的水平,但它们确实是从我面临的问题中提出的问题,以获得清晰的画面。因此,如果有人有时间,将不胜感激。
编辑:我不确定是否Data Repository
应该参考Domain Model
.