منطق الأعمال على كائنات قيمة متعددة - أين تضع الحلقة؟

StackOverflow https://stackoverflow.com/questions/1337502

سؤال

... وأفضل أفضل للتعامل مع ملاحظات النجاح / الفشل إلى طبقة الرأي.

الخيارات هي:

doBusinessLogic(things)

أو

for (Thing thing : things) {
  doBusinessLogic(thing)
}

على افتراض أننا نريد طبقة عرض تتلقى تعليقات النجاح / الأخطاء في طريقة ثابتة (أي من عمليات واحدة أو متعددة على كائنات القيمة)، ما هو أفضل طريقة؟

توضيح:

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

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

المحلول

ماذا عن شيء على غرار اقتراحك الأخير:

for (businessObject : businessObjects) { businessObject.doBusinessLogic() }

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

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

نصائح أخرى

في نهاية المطاف، ذهبت إلى الخيار السابق وخلق فئة "حزمة نتيجة" جنة خفيفة الوزن التي تغطي النجاحات وفشل الفعل في مجموعة من الأشياء. نجاح أو فشل معرف الكائن المقابل.

بوندسيس مأهول داخل كل اتصال منطق الأعمال وعاد إلى طبقة الرؤية. يتم القبض على الاستثناءات التي يتم إلقاؤها في حلقة منطق العمل "أداء على كائن" منطق الأعمال والفشل المقابل إضافة إلى حزمة النتائج (CENED إلى معرف الكائن).

تتمتع طبقة العرض بطريقة مساعدة بسيطة تقدم التعليقات الموجودة في حزمة النتائج للمستخدم.

هذا يعمل بشكل جيد للغاية.

أعتقد أن النهج الذي تتناوله مع هذا هو أفضل ما يناسب النظام الخاص بك.

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