ドメインモデル



ドメインは複数のサブドメインから構成されます。


カタログ・サブドメインは、顧客に購入可能な商品のリストを提供し、受注サブドメインは顧客に受注を処理します.
割引サブドメインはクーポンや特別割引などのサービスを提供し、出荷サブドメインは購入した商品を顧客に渡す一連のプロセスを処理します.

ソフトウェアはドメインのすべての機能を提供しません。

  • サブドメインの構成方法は、状況によって異なります.大規模なデバイスをエンタープライズ・クライアントに販売するには、オンラインでディレクトリを提供し、注文を受信するだけです.
    (逆に、衣料品やアクセサリーなどの一般顧客に商品を販売する場合は、カタログ、コメント、注文、決済、配送、会員機能が必要です.)
  • コンセプトモデルと実装モデル.
    概念モデルは問題を純粋に分析した産物である.コンセプトモデルは、データベース、トランザクション、パフォーマンス、実装テクノロジーなどの要因を考慮していないため、実際のコードを記述する際にコンセプトモデルをそのまま使用することはできません.したがって,概念モデルを実装可能な形式のモデルに変換する過程である.

    エンティティ


    :エンティティの最大の特徴は識別子です.識別子は各エンティティオブジェクトに対して一意であるため、各エンティティには異なる識別子があります.たとえば、受注フィールドには、受注ごとに1つの受注番号があります.この受注番号は、受注ごとに異なります.

    エンティティの識別子を作成します。


    :エンティティ識別子を作成する時点は、ドメインの特徴と使用するテクノロジーによって異なります.
  • 特定の規則に従って
  • を生成する.
  • UUID
  • を使用する.
    直接入力
  • のシリアル番号(シリアル番号またはDBの自動増分コラムを使用)
  • を使用します.
    UID(Universal Unique Identifier)を使用して識別子を生成できます.
    (多くの開発言語でUUIDジェネレータが提供されているため、適切なルールがなければ識別子としてUUIDを使用することができる.)
    UUID uuid = UUID.randomUUID();
    
    String strUuid = uuid.toString(); 

    setメソッドをドメインモデルに入れない


    :ドメインモデルにget/setメソッドを無条件に追加するのはよくない習慣です.特にsetメソッドは、ドメインのコア概念または意図をコードから消滅させる.
    public class Order{
    	public void setShippingInfo(ShippingInfo newShipping){ }
        	public void setOrderState(OrderState state){ }
    
    }
    ->changeShippingInfo()が配送情報を新たに変更することを意味する場合、setShippingInfo()メソッドは配送値のみを設定します.
    complete-Payment()は支払完了を示し、setOrder State()は受注ステータス値のみを設定します.
    DTOのget/setメソッド
    :データ転送オブジェクトの略で、プレゼンテーションレイヤとドメインレイヤの間でデータを交換する際に使用される構造です.```
    コードを入力してください
    最近の開発フレームワークまたは開発ツールでは、setメソッドではなくプライベートフィールドに値を直接割り当てる機能が提供されています.したがって,setメソッドを提供する必要がなく,フレームワークを用いてデータを受信することができる.