Strategy Design Pattern


انهارده حتكلم عن رابع ديزاين باترن و هو ال Strategy Design Pattern
اللى مشفش اللى فات او ال Clean Code هيلاقى اللينكات ف اخر البوست
ال Strategy Design Pattern هو عبارة عن عيلة من الخوارزميات
بتعمل Encapsulates لكل واحد منهم و بتخليه Changeable 
و بتخلى كل Class .. independently مستقل يعنى بتنقل بين كل algorithm و التانى
يعنى no have knowledge of the implementes
دا تعريفه كدا باختصار و سهل جدا يعتبر
طيب المهم بقى يا سيدى امتى حستخدمه
يعنى مثلا بعمل مشروع تخرج و عايز انقل بين الجوريزم اسمه
support vector machine و knn مثلا
او لو فى نوعين او 3 encapsulation algorithm و عايز اتنقل بينهم
او عايز تحط Business Rules على حاجة معينة مثلا Last Name او Gender
Sorting مثلا
او Most popular articles by views
فكرة ال Strategy Design Pattern
ان يبقى عندك Parent Interface و عندك child بيعموا منه implement
و بعدين تعمل concrete class يكون reference
فى اختلاقات كتير فى ال Strategy Design Pattern
اسهل مثال لو عندك مثلا Data و عايزها ع شكل Json او Serialized او Array عادى
فا ازاى بقى استخدمته عمل interface اسمه OutPut و فى method اسمها load
و اى نوع الجوريزم هعمله حياخد implementation من ال class دا بالتالى ﻻزم ياخد ال method دى
فا هنا عندى 3 انواع الجوريزم اهوا كل نوع بيـ return ال data بشكل معين
بس و فى الاخر فى class ال Client دا بيـ set ال data من النوع اللى انت عايزه و بينادى على method ال Load بتعته و يرجعلك الداتا بس كدا
فا انت كدا عملت encapsulating فا الكود نضيف و سهل على اى developer تانى و بتضيف اى نوع الجوريزم (output) منغير ما تاثر على اى حاجة
فى مثال تانى فى كتاب Head First Design Pattern بيعملوا لعبة ل Ducks فى منها كذا نوع
flyable و quackable
و دا المثال اهوا
http://a.up-00.com/2017/11/15109201327311.png
راح عمل parent اسمه duck
و فصل ال Quackable لوحده ب method quack
و فصل ال flyable لوحده ب method fly
و اى duck هتتعمل هتـ implement كلاس ال Duck اساسى
و لو بتطير هتاخد من class ال Flyable
بس دى فكرته ببساطة يارب يكون سهل و قدرت اوصل المعلومة
الكود هنا على ال Github
https://github.com/…/designPatterns/blob/master/Strategy.php
________________________________________________
المصدر
كتاب Head First Design Pattern
http://designpatternsphp.readthedocs.io/…/Strat…/README.html
________________________________________________
يعنى ايه Desgin Pattern
https://goo.gl/PvdQWf
factory desin pattern
https://goo.gl/W3Mr75
Singleton Desgin pattern
https://goo.gl/6rtdAe
Observer Design pattern
https://goo.gl/DguKWp
vue.js و مقارنة بين ال Angular , React
https://goo.gl/fJh4y8
كل المقالات فى ال Blog
https://goo.gl/Z65VFR

تعليقات

المشاركات الشائعة من هذه المدونة

Singleton Desgin pattern

Chain of Responsibility Design pattern

Factory Design Pattern