سؤال

شعرت بالارتباك مرة أخرى بعد القراءة عن هذا النمط المضاد والمخاوف الكثيرة حوله هنا على SO.

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

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

نظرًا لأنني في حيرة من أمري بشأن المفاهيم، فأنا لست متأكدًا من أن ما أكتبه منطقي.لا تتردد في طلب التوضيح.

هل كانت مفيدة؟

المحلول

يصبح نموذج مجال "حقيقي" عندما يحتوي على الجميع (أو معظم) من سلوك الذي يشكل مجال الأعمال (لاحظ أنني أؤكد منطق الأعمال, ، وليس واجهة المستخدم أو الاهتمامات المتعامدة الأخرى).

إذا كنت تستخدم لغة في كل مكان, ، والحصول على ردود فعل مستمرة منك خبراء المجال, ، ستعرف أنك على المسار الصحيح (يجب على الخبراء أن يومئوا برأسهم عندما يرون نموذج المجال الخاص بك).إذا كنت لا تفعل هذه الأشياء، فأنت لا تفعل DDD (إريك إيفانز يتحدث عن ذلك).

إلى نقطة DTOs:لا تتجاهلهم.من منظور التنفيذ، ستحتاج إليها لنقل البيانات بين الطبقات/الطبقات.تعتمد كيفية الجمع بين DTOs وكائنات المجال الحقيقية على التكنولوجيا التي تستخدمها.

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

نصائح أخرى

يتبادر إلى ذهني أمران مثيران للاهتمام:

  • تختلف كائنات نقل البيانات (DTOs) عن كائنات المجال.إنها تخدم أغراضًا مختلفة في أماكن مختلفة في الهندسة المعمارية - لا تخلط بينها.توفر كائنات المجال أ واجهة برمجة التطبيقات الغنية مع تماسك عالي.DTOs هي هياكل البيانات السلبية تُستخدم في الواجهة الخارجية للتطبيق - تمامًا مثل UI ViewModels، ولكنها تستهدف الأنظمة الآلية بدلاً من المستخدمين.
  • اجتهد بعد اختيار ORM الذي يسمح لك بالتوظيف استمرار الجهل.هذا يعني أنه يمكنك تحديد نموذج المجال الخاص بك بطريقة غير محدودة، وببساطة اطلب من ORM تعيين الكائنات إلى قاعدة بيانات علائقية.
<اقتباس فقرة>   

ولكن إذا أضيف المنطق نطاق كافية على أن المجمع، في نقطة ما لم يتحول الأمر الى نموذج المجال الحقيقي بعد ذلك؟

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top