سؤال

أنا قليلا من دي مبتدئ ، فاغفر لي إذا كان هذا هو نهج خاطئ أو سؤال سخيف.

دعونا نقول لدي نموذج مما يخلق/تحديثات النظام ، و أعلم انها سوف تحتاج إلى استرداد قائمة من المنتجات و العملاء لعرضها.أريد أن تمر في ترتيب وجوه أنه التحرير ، ولكن أريد أيضا أن حقن ProductsService و CustomersService كما التبعيات.

لذلك أنا أريد حاوية اللجنة الأولمبية الدولية (أيهما أذهب مع) توريد الخدمات ، ولكن سيكون رمز الدعوة إلى إمدادات النظام كائن إلى تحرير.

يجب أن تعلن منشئ كما أخذ النظام وجوه المعلمة الأولى و ProductsService و CustomersService بعد ذلك ، على سبيل المثال:

public OrderForm(Order order, ProductsService prodsSvc, CustomersService custsSvc)

...أو أن تبعيات يأتي أولا والنظام كائن آخر, على سبيل المثال:

public OrderForm(ProductsService prodsSvc, CustomersService custsSvc, Order order)

هل يهم ؟ أنها لا تعتمد على أي حاوية اللجنة الأولمبية الدولية التي يمكنني استخدامها ؟ أم أن هناك "أفضل" طريقة ؟

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

المحلول

وأنا لا أتفق مع الإجابة @ جامعة الآغاخان لل.

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

وبغض النظر عن DI، أشعر أنه من المفيد توضيح في عقلك على الأقل نوع من الدولة يحمل كل كائن، مثل الوضع الحقيقي (الأمر)، والدولة مستمدة (إن وجدت)، وتبعيات (الخدمات):

http://tech.puredanger.com/2007/09/18/ استكشاف الكهوف /

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

نصائح أخرى

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

خلط التبعية العادي الحجج جعل منطق البرنامج الخاص بك أكثر تعقيدا.

في هذه الحالة سيكون من الأفضل أن تعلن التبعية خصائص (أيإزالة التبعيات من منشئ) أو تهيئة النظام الملعب بعد اللجنة الاولمبية الدولية التي شيدت OrderForm و حلها هو تبعيات (أيإزالة المعايير العادية من منشئ).

أيضا يمكنك أن يعلن كل من المعلمات الخاصة بك ، بما في ذلك النظام كما التبعيات.

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

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

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