私はドメイン駆動設計を始めたばかりで、次のような構造のドメインのプロジェクトがあります。
ドメイン
- /エンティティ
- /境界
- /ユーザーストーリー
私が DDD を理解しているように、外の世界がドメインと通信する境界は別として、ドメイン内のすべてが見えないようにする必要があります。ドメイン内のエンティティ クラスについて私が見たすべての例には、パブリック アクセス修飾子があります。たとえば、ここでは Message という名前のエンティティがあります。
public class Message
{
private string _text;
public string Text
{
get { return _text; }
set { _text = value; }
}
public Message()
{
}
public bool IsValid()
{
// Do some validation on text
}
}
エンティティ クラスとそのメンバーが内部としてマークされ、ドメイン プロジェクト内でのみアクセスできるようにすると、より正確ではないでしょうか?
例えば:
internal class Message
{
private string _text;
internal string Text
{
get { return _text; }
set { _text = value; }
}
internal Message()
{
}
internal bool IsValid()
{
// Do some validation on text
}
}