私はソフトウェア開発に非常に慣れていません。階層化アーキテクチャは、オブジェクト指向ソフトウェア開発のプロセスで発生する複雑さを軽減し、言うまでもなく、コードを整理しておくための優れた方法だと思います。
私はドメイン駆動設計のアプローチについて学ぶことに興味があり、それに慣れるためにいくつかの問題に遭遇しました (もちろん、初心者レベルのものです)。
ここにあります -
個人に関連するデータをデータベースに保存し、個人の詳細を 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
をsome にバインドして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
。