design-patterns شرح - ما هو الجذر التجميع؟




5 Answers

في سياق نمط المستودع ، فإن الجذور المجمعة هي الكائنات الوحيدة التي يتم تحميل رمز العميل الخاص بك من المستودع.

يحتفظ المستودع بالوصول إلى الكائنات التابعة - من منظور المتصل ، يقوم تلقائيًا بتحميلها ، إما في نفس الوقت الذي يتم فيه تحميل الجذر أو عند الحاجة الفعلية إليه (كما هو الحال مع التحميل البطيء).

على سبيل المثال ، قد يكون لديك كائن Order الذي يقوم بتغليف العمليات على كائنات LineItem متعددة. لن يقوم رمز العميل أبداً بتحميل كائنات LineItem مباشرة ، فقط Order الذي يحتوي عليها ، والذي سيكون الجذر التجميعي لهذا الجزء من المجال الخاص بك.

examples types

أحاول الحصول على رأسي حول كيفية استخدام نمط المستودع بشكل صحيح. يستمر المفهوم المركزي لـ Aggregate Root في الظهور. عند البحث في كل من الويب و للمساعدة في ما هو الجذر التجميعي ، أظل أجد مناقشات حولها وروابط ميتة إلى صفحات من المفترض أن تحتوي على تعريفات أساسية.

في سياق نمط المستودع ، ما هو الجذر التجميعي؟




جذر التجميع هو اسم معقد لفكرة بسيطة.

فكرة عامة

رسم تخطيطي للفئة مصممة بشكل جيد بتغليف داخله. وتسمى نقطة الوصول إلى هذه البنية باسم aggregate root .

قد يكون root.doSomethingWhichHasBusinessMeaning() من الحل معقدة للغاية ولكن المستخدم من هذا التسلسل سيتم فقط استخدام root.doSomethingWhichHasBusinessMeaning() .

مثال

تحقق من هذا التسلسل الهرمي للفئة البسيطة

كيف تريد أن تركب سيارتك؟ اختار أفضل API

الخيار أ (يعمل فقط بطريقة ما):

car.ride();

الخيار B (يمكن للمستخدم الوصول إلى دروس اللغة):

if(car.getTires().getUsageLevel()< Car.ACCEPTABLE_TIRE_USAGE)
    for (Wheel w: car:getWheels()){
        w.spin();
    }
}

إذا كنت تعتقد أن الخيار أ هو أفضل ثم التهاني. يمكنك الحصول على السبب الرئيسي وراء aggregate root .

جذر التجميع بتغليف فئات متعددة. يمكنك التعامل مع التسلسل الهرمي كله فقط من خلال الكائن الرئيسي.




إذا اتبعت نهج قاعدة البيانات أولاً ، فإن تجميع الجذر هو عادةً الجدول على جانب واحد من علاقة واحدة.

المثال الأكثر شيوعا هو الشخص. كل شخص لديه العديد من العناوين ، واحد أو أكثر من قسائم الدفع ، الفواتير ، إدخالات CRM ، إلخ. ليس الحال دائما ، ولكن 9/10 مرات.

إننا نعمل حاليًا على نظام أساسي للتجارة الإلكترونية ، ولدينا أساسًا جذور مجموعتين:

  1. الزبائن
  2. الباعة

يقدم العملاء معلومات الاتصال ، نقوم بتعيين المعاملات لهم ، والمعاملات الحصول على البنود ، وما إلى ذلك.

يبيع البائعون المنتجات ، ولديهم أشخاص الاتصال ، والصفحات المتعلقة بنا ، والعروض الخاصة ، وما إلى ذلك.

يتم الاعتناء بها من قبل العميل ومستودع البائع على التوالي.




دينة:

في سياق مستودع التخزين ، يعتبر التجميع الجذر عبارة عن كيان بدون كيان أصل. يحتوي على صفر ، واحد أو العديد من كيانات الأطفال التي يعتمد وجودها على الوالد بالنسبة لهويته. هذه علاقة بين شخص وآخر في مستودع. تلك الكيانات الطفل هي رتل عادي.




في Erlang ليست هناك حاجة للتمييز بين المجاميع ، بمجرد أن يتألف التجميع من هياكل البيانات داخل الدولة ، بدلا من تكوين OO. انظر على سبيل المثال: https://github.com/bryanhunter/cqrs-with-erlang/tree/ndc-london




Related

design-patterns repository-pattern ddd-repositories aggregateroot