سؤال

ما هو الاختراق من أنماط التصميم في العالم الحقيقي ؟ هل يمكنك استخدامها في حياتك اليومية وظيفة - مناقشة كيفية تطبيقها مع زملاء العمل الخاص بك - أو أنها لا تزال أكثر من أكاديمي المفهوم ؟

أنها توفر في الواقع الفعلي قيمة إلى عملك ؟ أم أنها مجرد شيء أن يتحدث الناس عن أن الصوت الذكية ؟

ملاحظة:الغرض من هذا السؤال تجاهل 'بسيطة' أنماط التصميم مثل المفرد.أنا أتحدث عن تصميم التعليمات البرمجية الخاصة بك حتى تتمكن من الاستفادة من نموذج عرض المراقب المالي, ، وما إلى ذلك.

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

المحلول

أي برنامج مكتوب بشكل جيد سوف تستخدم أنماط التصميم ، حتى إذا لم تكن اسمه أو معترف بها على هذا النحو.هذا ما أنماط تصميم ، تصاميم مرارا وتكرارا ، بطبيعة الحال تحدث.إذا كنت التواصل مع قبيح API, سوف المرجح أن تجد نفسك تنفيذ Facade لتنظيفه.إذا كنت قد حصلت على الرسائل بين المكونات التي تحتاج إلى فصل ، قد تجد نفسك باستخدام Observer.إذا كنت قد حصلت على عدة خوارزميات قابلة للتبديل ، قد ينتهي باستخدام Strategy.

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

وبطبيعة الحال, إذا كنت تستخدم اللغة الحديثة ، ربما سوف يضطر إلى استخدامها في بعض الأمور ، لأنهم خبز في المكتبات القياسية.

نصائح أخرى

في رأيي السؤال:"هل استخدام نمط التصميم؟", وحدها قليلا معيبة لأن الجواب عالميا نعم.

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

وأنا شخصيا استخدام أنماط كأداة اتصال.هذا هو.فهي ليست حلول التصميم ، فهي ليست أفضل الممارسات ، فهي ليست أدوات في مربع الأدوات.

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

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

أن نعود إلى سؤالك الأصلي:
"هل يمكنني استخدام أنماط التصميم?", نعم!
"هل أنا بنشاط الهزيل تجاه أنماط التصميم?", لا.

نعم.أنماط التصميم التي يمكن أن تكون رائعة عند استخدامها بشكل مناسب.كما ذكرت أنا الآن باستخدام Model-View-Controller (MVC) لكل من بلدي مشاريع على شبكة الإنترنت.وهو شائع جدا في نمط في الفضاء على شبكة الإنترنت الأمر الذي يجعل من جانب الخادم رمز أنظف بكثير و منظمة تنظيما جيدا.

أبعد من ذلك, وإليك بعض أنماط أخرى قد تكون مفيدة:

  • MVVM (Model-View-ViewModel):نمط مماثل MVC;استخدام WPF و تطبيقات سيلفرلايت.

  • التركيب:كبيرة عندما تحتاج إلى استخدام التسلسل الهرمي من الكائنات.

  • المفرد:أكثر أناقة من استخدام globals لتخزين العناصر التي تحتاج حقا إلى مثيل واحد.كما ذكرت نمط بسيط لكنه لا يستخدم.

ومن الجدير بالذكر نمط تصميم يمكن أيضا تسليط الضوء على عدم وجود ميزات اللغة و/أو أوجه القصور في اللغة.على سبيل المثال ، التكرار مبنية الآن كجزء من أحدث لغات.

بشكل عام تصميم أنماط مفيدة جدا ولكن يجب عدم استخدامها في كل مكان ؛ فقط حيث أنها تناسب احتياجاتك.

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

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

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

أنا لا أقول كل نمط تصميم يستخدم ولكن الكثير منها.

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

ونحن أيضا استخدام الأنماط التي لم يتم توثيقها ولكن أن تخرج من تصميم الكثير.

فتذكروا, نحن لا نستخدم منها الكثير.

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

نعم أنا استخدم الكثير من أنماط التصميم ، ولكن أنا أيضا في نهاية المطاف بناء بعض البرامج التي أنا في وقت لاحق معرفة يستخدم 'اسمه' تصميم نمط.الأكثر أناقة ، قابلة لإعادة الاستخدام التصاميم يمكن أن يسمى 'نمط'.انها تشبه كثيرا حركات الرقص.نعلم جميعا الفالس ، 2-الخطوة, ولكن ليس كل شخص لديه اسم 'عثرة و إنطلق بسرعة' على الرغم من أن معظمنا فعل ذلك.

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

هم المهم ، نعم لأنه يتيح لك طريقة نتحدث عن تصميم البرمجيات بطريقة سريعة وفعالة المقبولة عموما الطريقة.يمكنك أن تفعل أفضل حلول مخصصة نعم (شيء)?

الأصلي GoF أنماط تم سحبها من رمز الإنتاج ، حتى أنها سجلت ما كنت تستخدم بالفعل في البرية.أنها ليست محض أو حتى معظمها أكاديمي شيء.

أجد نمط MVC المفيد حقا أن عزل نموذج المنطق الذي يمكن من استخدامها أو عمل دون الكثير من المتاعب.كما أنه يساعد على دي اقتران الفصول الدراسية ويجعل وحدة اختبار أسهل.لقد كتبت عن ذلك في الآونة الأخيرة (نعم, وقح المكونات هنا...)

أيضا, لقد استخدمت مؤخرا مصنع نمط من الفئة الأساسية لتوليد والعودة السليم DataContext الفئة التي احتجت على الطاير باستخدام LINQ.

الجسور تستخدم عند محاولة عندما يحاول الغراء معا اثنين من التكنولوجيات المختلفة (مثل الكاكاو و روبي على ماك ، على سبيل المثال)

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

تحتاج فقط أن نكون حذرين حتى لا تصبح ، العمارة رائد فضاء!

نعم, تصميم أنماط تستخدم إلى حد كبير في العالم الحقيقي - و يوميا من قبل العديد من الناس الذين أعمل معهم.

في رأيي أكبر من القيمة المقدمة من أنماط التصميم هو أنها توفر عالمية لغة عالية المستوى لنقل برامج التصميم الأخرى المبرمجين.

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

نعم, تصميم أنماط أو تجريدي أنماط هي جزء من حياتي ، حيث كنت أنظر, أنا نبدأ في رؤية لهم.ولذلك أنا محاط بهم.ولكن, كما تعلمون, القليل من المعرفة شيء خطير.ولذلك أوصي بشدة لك قراءة GoF الكتاب.

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

كما تعلمون, anti-النمط هو أيضا شيء خطير و هذا يحدث عندما يكون لديك القليل من الخبرة في أنماط التصميم.و إعادة بيع ديون مكافحة أنماط أكثر صعوبة.كما أوصى الكتاب حول هذه المشكلة الرجاء قراءة "AntiPatterns:إعادة بيع ديون البرامج أبنية ومشاريع في الأزمة".

نعم.

نحن حتى في وظيفتي الحالية:المركزية الترميز مع COBOL و PL/I.

حتى الآن لقد رأيت محول, زائر, واجهة, وحدة, مراقب شيء قريب جدا من مركب و مكرر.بسبب طبيعة اللغات هو في الغالب strutural الأنماط التي يتم استخدامها.أيضا, أنا لست دائما على يقين من أن الناس الذين يستخدمونها ذلك conciously :D

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

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

أنماط التصميم بالتأكيد تلعب دورا كبيرا في كل من "المستقبل" الأفكار.

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