ドメイン駆動開発_フォルダー構成編_#38_AreaIdにビジネスロジックを入れる

当サイトではアフィリエイト広告を利用しています。

NDDD

今AreaIdクラスにはコンストラクタとValue,そしてEqualsCoreがありますが,これだけだと,Valueしか表現できていないので,あまり意味のあるValueObjectではありません。ここにビジネスロジックを入れていきましょう。

ビジネスロジックとは?

ビジネスロジックとは,AreaIdの値に対して処理をしているものを指します。今回であれば,MeasureEntityのAreaIdに対してLatestViewModelで編集処理を行っています。この処理をAreaIdクラスに移すことで,処理が一元化されます。

次の部分がLatestViewModelに存在するAreaIdに対する編集ロジックです。これはアプリケーション全体で共通にしたいので,AreaIdクラスに移します。

namespace NDDD.Domain.ValueObjects
{
    public sealed class AreaId : ValueObject
    {
        public AreaId(int value)
        {
            Value = value;
        }

        public int Value { get; }

        public string DisplayValue => Value.ToString().PadLeft(4, '0');


        protected override bool EqualsCore(AreaId other)
        {
            return this.Value == other.Value;
        }
    }
}

これでAreaIdのDisplayValueを呼び出せば,アプリケーション全体で統一した編集ができるようになります。 このような感じでValueObject化して,ビジネスロジックをValueObjectに移していきます。