سؤال

مجرد محاولة لجعل رأسي حول مسؤوليات طبقة الخدمة وطبقة المستودع عند حفظ كائن إلى متجر الثبات الخاص بي.

الحالي تحت الوقوف هو:

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

ضمن طريقة "حفظ" على "Noteservice" أقوم بتنفيذ التحقق من صحة منطق العمل الخاص بي ، ثم تمرير الكائن "ملاحظة" إلى طريقة "حفظ" في "noterepository".

تتحقق طريقة "الحفظ" في "NoterePository" لمعرفة ما إذا كان هناك مفتاح أساسي موجود في هذا الكائن ، وإذا كان الأمر كذلك ، فاحصل على هذا الكائن من DB ويقوم بتحديث خصائصه باستخدام الكائن "ملاحظة" تم تمريره ثم يتم حفظه العودة إلى DB. إذا لم يكن هناك مفتاح أساسي ، فسيتم حفظ الكائن ببساطة إلى DB وإعادته إلى الخدمة مع المفتاح الأساسي الذي تم إنشاؤه حديثًا.

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

المحلول

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

أكبر فائدة لما تفعله هو عدم تشويش كل الأعمال ومنطق DB في وحدة التحكم التي يميل الكثير من الناس إلى القيام بها. تريد دائمًا أن تكون وحدات التحكم الخاصة بك خفيفة قدر الإمكان إذا كنت ترغب حقًا في اتباع MVC.

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