كيف يمكنك تعلم نمط تصميم الإستراتيجية؟ اصنع همبرغر!

هل تعرف كيف تطلب برجر؟

إذا كان الأمر كذلك ، لدي أخبار جيدة لك. ثم تعرف كيف تستخدم أحد أنماط التصميم الأكثر شيوعًا ، نمط الإستراتيجية!

"كيف ذلك؟" قد تسأل. حسنًا ، دعنا نلقي نظرة على ميزات نمط الاستراتيجية.

  • يحدد عائلة من الخوارزميات.
  • وهي تغلف كل خوارزمية.
  • يجعل الخوارزميات قابلة للتبديل داخل تلك العائلة.

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

هل تشعر بالارتباك مثل هذا الرجل؟

كيف يكون لهذا علاقة مع البرغر؟

دعونا نفكر في البرغر لثانية واحدة.

هناك العديد من أنواع البرغر: برجر الخضروات ، برجر الجبن ، برجر الدجاج المشوي ، برجر الجبن المزدوج على سبيل المثال لا الحصر. جميعهم يشاركون في نفس التنسيق: أعلى كعكة + كعكة أسفل + باتي.

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

دعونا نلخص تعريف نمط الاستراتيجية من حيث البرغر. ما هي عائلة الخوارزميات من حيث البرغر؟ إنها عائلة الفطائر المختلفة:

  • فطيرة برجر دجاج = [صدر دجاج مشوي]
  • فطيرة بالجبنة = [جبنة + لحم بقر باتي]
  • باتي لجبنة تشيز برجر = [جبنة + باتي باتي + جبنة + باتي باتي]

وهي مغلفة وقابلة للتبادل مع بعضها البعض. قم بتبادل فطيرة برجر الدجاج مع فطيرة تشيز برجر وستحصل على برجر تشيز برجر.

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

يمكنك طلب أي برغر تريد. ولكن بالنسبة للطاهي ، فإن عمل برغر يتبع نفس الإجراء العام: تحضير الكعكة ، وطهي الفطيرة ، ثم وضع الفطيرة بين الكعك العلوي والسفلي.

البرغر هو مثال حقيقي على استخدام نمط الاستراتيجية.

دعنا نلقي نظرة على الكود.

هناك ثلاثة مشاركين في نمط الاستراتيجية.

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

استراتيجية ملموسة تنفذ الخوارزمية باستخدام StrategyInterface.

تم تكوين السياق باستخدام كائن ConcreteStrategy ؛ يحافظ على إشارة إلى كائن الاستراتيجية ؛ قد تحدد واجهة تسمح للاستراتيجية بالوصول إلى بياناتها.

GrilledChickenStuffing و BeefPattyStuffing هي استراتيجياتنا الملموسة. كل يعرّف كيف يجب طهي الحشوة. الطبقة برغر هو سياقنا. تمت تهيئته باستخدام إستراتيجية ملموسة ويستخدم الإستراتيجية الملموسة لاحقًا عندما يحتاج البرغر إلى الطهي.

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

تعلن الإستراتيجية الواجهة التي يجب أن تنفذ إستراتيجية ملموسة لها والتي يمكن للسياق استخدامها. كما ترى في التعليمات البرمجية أعلاه ، يقوم كل من GrilledChickenStuffing و BeefPattyStuffing بتنفيذ طريقة الطهي ، وهذه هي الطريقة التي يتوقع بها المستخدم لإستراتيجية ملموسة ، ويعرف أيضًا باسم السياق ، توفر استراتيجية ملموسة.

الفكرة الرئيسية لنمط الاستراتيجية

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

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

كل شيء عن التكوين. المستخدم لديه استراتيجية والمندوبين. مستخدم الإستراتيجية يفوض الوظيفة. في مثالنا ، يتمتع البرغر بفطيرة ، وهو يفوض مهمة الطهي.

مزايا نمط الاستراتيجية

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

أشياء يجب الانتباه إليها أثناء التفكير في استخدام نمط الاستراتيجية

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

مبادئ التصميم المستخدمة في نمط الاستراتيجية

  • تغليف ما يختلف
  • صالح التكوين على الميراث
  • البرنامج إلى واجهات ، وليس التنفيذ

لقد تعلمت الآن عن نمط الإستراتيجية.

إليك سؤال مهم: ما هي استراتيجية برجر المفضلة لديك؟ :)

أنا أنشر إلى sihui.io الأسبوعية.

اشترك حتى لا يفوتك المقال التالي من المسلسل.

في المرة القادمة سوف نلقي نظرة على طريقة القالب و ...