عن طريق المصانع في المقدمون في مشروع تصميم الموديل عرض مقدم والمجال مدفوعة

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

سؤال

في تصميم نطاق مدفوعة، يبدو أن ممارسة جيدة لاستخدام المصانع لإنشاء كائنات المجال الخاص بك في طبقة نطاقك (بدلا من استخدام منشئ المباشر أو اللجنة الاولمبية الدولية).

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

وهنا مثال، ويقول لدي كائن المجال التكوين التي لديها عدد من إعدادات عشرية.

وتكوين الطبقة العامة: PersistantObject {

 public decimal temperature {get;set;}

 ...(times 20)

 public decimal gravity {get;set;}

و}

في أجل إنشاء هذا الكائن في الطبقة نطاق، بدلا من طبقة مقدم، كنت أود أن يكون لتمرير كل هذه القيم العشرية كمعلمات وظيفة. إنشاء تعريف وظيفة غير عملي والدعوة.

وأي ConfigurationService.CreateConfiguration (درجة الحرارة، ... (X20)، الجاذبية)؛

والحل ربما أفضل سيكون لإنشاء الكائن تكوين في طبقة مقدم، وتعيين كل القيم الكائن التكوين مباشرة من إدخال المستخدم، وتخطي استدعاء دالة طويلة.

والتكوين تكوين = ConfigurationFactory.CreateNewConfiguration ()؛

وconfig.temperature = درجة الحرارة؛

و.. (X20) .. = ...؛

وconfig.gravity = الجاذبية؛

وConfigurationService.SaveNewConfiguration (التكوين)؛

ولكن أنا أتساءل إذا كان هذا النهج هو الخطأ، ولماذا؟ إذا كان كل من هذه الطرق على خطأ، ما هو أفضل نهج لخلق كائن طويلة من إدخال المستخدم، ولماذا؟

وشكرا!

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

المحلول

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

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

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

وأساسا، وكنت وصول إلى حل DTO إذا قمت بتطبيق إدخال كائن معلمة إعادة بيع ديون.

نصائح أخرى

وهناك طريقتان رئيسيتان أود أن التعامل مع هذا

1) إذا كان هذا هو الإعداد من خلال الحوار وأود أن إنشاء الفصول تنفيذ نمط القيادة وربط الحوار مع الكائن في السؤال. على سبيل المثال CmdCreateConfigurationService، وCmdEditConfigurationService.

وCmdCreateConfigurationService سيعتمد على فئة مصنع والحد الأدنى من المعايير التي تحتاج إليها لتحديد خدمة تكوين الصحيحة.

ويمكنك إعداد واجهة IConfigurationServiceEditor وتمرير ذلك باعتبارها واحدة من المعلمة إلى CmdEditConfiguration معلمات. مع واجهة IConfigurationServiceEditor على تحديد العديد من الأساليب ما تحتاج إليه لجعل نقل المعلومات من وإلى الحوار سهل وغير مؤلم ممكن. أوصي باستخدام مجموعة من المفاتيح وجوه values.The قيادة تعرف كيف الإعداد حتى خدمة تكوين من هذه المجموعة. في حوار أعرف أن نتوقع هذه المجموعة عند إعداد.

وبغض النظر عن هيكل البيانات التي سوف قيام بهذا العمل من ملء دائرة تكوين في كائن الأمر. من خلال وجود كائن غير الحوار / شكل / شاشة تنفيذ IConfigurationServiceEditor يمكنك أتمتة الاختبار الخاص بك وفي ظروف معينة تجعل تكوين easiers الأشياء تعقيدا.

وأنا وضعت هذه الطريقة لsoftaware CAD / CAM التي لديها عشرات الأشكال حدودي وجود كل 4-40 الإدخالات.

scroll top