アプリケーションのドメイン コアには、Order
オブジェクトがあります。これらのプロパティは勝手に変更するべきではなく、オブジェクトに対してパブリック関数の 1 つを実行するコンテキスト内でのみ変更する必要があるため、プライベート セッターがあります。
public class Order
{
public int Id { get; private set; }
public int MarketplaceId { get; private set; }
public int CustomerId { get; set; }
public OrderStatus Status { get; private set; }
public bool Validate() { //stuff }
public void Fulfill()
{
//messes with order status, etc.
}
}
私はOrderRepository
、機能を持つ私のアーキテクチャの外縁にあるデータアクセス用を持っていGetOrderById(int orderId)
ます。この関数は、データベースからプルしてOrder
オブジェクトを設定します。オブジェクトにデータを入力できるようにする必要がありますが、オブジェクトを使用する他のアプリケーションやサービスがこれらのプロパティを設定するべきではないためOrder
、プロパティをパブリックとして公開したくありません。Order
これをどのように設計してOrder
、リポジトリからオブジェクトを取り込みながら、オブジェクトのカプセル化を保持するにはどうすればよいOrder
ですか?
1 つ以上のコンストラクター (オーバーロード) を介してこれを行うのは面倒なようですが、他に何をすべきかわかりません。