/‫‪Factory Pattern‬‬

‫‪Factory Pattern‬‬

‫اول :- الموضوع بالعربى يعنى هتقراه هتقراه ما لكش حجة‬
‫ً‬
‫ثانيا :- الموضوع شيق جدا وسهل جدا جدا ..
‫ثالثا :- الكود مترقم عشان سعادتك لو مفهمتش اى سطر تبقى تسأل برقم السطر‬
‫الموضوع بيتكلم عن حاجة اسمها ‪ Factory pattern‬يبقى أكيد متعلق بموضوع ال ‪Design Pattern‬‬
‫برافو عليك هو ده بالظبط اللى كنت عايز اقولهولك‬
‫يبقى إيه هو ال ‪ Factory Pattern‬ده :-‬
‫هو زى ما بيقولوا “لكل شخص من اسمه نصيب ” يعنى فع ً مصنع بس بيصنع )‪ ( Objects‬مش‬
‫ل‬
‫فاهمك ياض‬
‫بص ياسيدى الراجل ده اللى هو ال ‪ Factory‬عنده ‪ method‬اسمها ‪ getClass‬انت هتنادى على الميثود‬
‫دى وتقولها هاتيلى أوبجكت من الكلس اللى اسمها كذا تروح هيا على طول جايبالك الوبجكت اللى‬
‫انت قولت عليه )ما شاء ال عليها شطورة وبتسمع الكلم (‬
‫طيب الميثود دى هتعمل الموضوع ده إزاى وهتجيب الوبجكت منين – بعيد عن السحر والشعوذة -‬
‫تعالى ياسيدى نتخيل الموقف التالى‬
‫– إيه بقى يا سيدى الموقف اللى تخيلناه ده إن شاء ال -‬
‫– اهدى عليا الموضوع وما فيه إنى عندى كلس اسمها ‪ X‬عندى ليها كلستين وارثينها بالحيا‬
‫أل وهم ‪ XY‬و ‪XZ‬‬
‫خلى بالك‬


حاول دايما ما تخليش الكلاس بتاعتك – فخفخينا – ما تحطش الكود اللى فى البرنامج كله فى الكلاس

    (

ما تقلقش انا كنت بعمل كده برده

    )

دايما تخلى الكلاس بتاعتك متخصصة فى فى الحاجات اللى هى بتعملها يعنى على قد ما تقدر افصل الكود عن بعضهو ده يا سيدى مبدأ فى الDesign الناس المفترية دول بيقولولك حاول دايما إنك تقطع العلاقات” – والعياذ بالله – بين الكلاسات وبعضها وده عشان إن الكود ما يكنش معتمد على بعضه وشوية كلام تانى ربنا يسهل ونبقى نتكلم عنه بعدين
وعندى كمان كلاس اللى هيا أساس الليلة كلها الـ Factory ودى فيها ميثود ودى بقى أساس اساس الليلة getClass الميثود دى بتاخد arguements اللى هم الـ abc اللى فى الشكل اللى ملهمش محل من الإعراب لحد دلوقتى . وعلى طول الميثود دى بناء على الـ arguements دى بتطلعلك الكلاس اللى تتناسب مع الموقف اللى سعادتك فيه.
لو لسه ما اتخنقتش ولسه عايش والحمد لله وصحتك كويسة خش على المثال اللى جاى بقى
تخيل ياسيدى – تانى ؟ إن اننا شغالين فى بروجكت كبير حبتين بيقوم بمهمة عظيمة حبتين ألا وهى إنك بتدخل له اسم واحد فهو بيعرف الاسم الأول والاسم الأخير لوحده – ومالك متقل على نفسك أوى كده – وهو بيعمل الكلام ده سواء الرجل كتب الاسم الأول وبعدين الأخير أو العكس إذا كتب الاسم الأخير الأول وبعدين الاسم الأول – طبعاً لازم تبين إنت كاتب أنهى اسم الأول عشان البرنامج مش معاه شجرة العيلة يا حبيبى
يعنى يا إما هيكون بالشكل ده “firstname lastname” أو بالشكل ده “lastname, firstname”
يبقى من الآخر الـ Comma هى سيدة الموقف أوعى تقولى بقى ولازمتها إيه من الاول وديزين باترن وواجع دماغنا من الصبح دا يخلص فى سطر كود – استر عليا ربنا يستر على ولاياك –
نيجى بقى لأول كلاس


زى ما انت شايف الكلاس بتشرح نفسها
ودى بقى الكلاس اللى كان اسمها فى الشكل اللى فوق X
زى ما قلنا أنها موروثة بالحيا وهيا هنا معاها ولدين
واحد اسمه FirstFirst وده اللى هيشتغل لما يكون الراجل كاتب اسمه زى البنى آدمين يعنى الاسم الأول وبعدين الأخير
والتانى اسمه LastFirst وده لما يكون الراجل حالة متشقلب وكاتب الاسم الأخير الأول وبعدين الاسم الأول – طبعا فاصل بينهم بـ Comma –
تعالى بقى نشوف أول كلاس

‫هنا بقى ياسيدى أول حاجة الراجل ده بيعملها إنه بياخد السم فى الـ ‪ Constructior‬بتاعه ويفصل‬
‫الأسم الأول عن الخير والكلس دى هنستخدمها فى حالة ما إذا كان الرجل كاتب الأسم الأول‬
‫وبعدين الأخير‬
وهنا ياسيدى الكلاس الثانى

وهنا لما يكون الراجل مشقلب نفسه يعنى كاتب الاسم الأخير وبعدين الأول الكود هيشوف الـ Comma فين ويقطع مره من قبلها ومرة من بعدها
يلا بينا نبنى المصنع ( همتكم يا رجالة)

هنا بقى ياعم الحج الراجل بياخد الاسم الكريم بتاع سعادتك ويشوف لو فيه Comma يجرى ينادى على الكلاس المتشقلبة ولو مفيهوش ينادى على الكلاس اللى مش متشقلبة وبكده يبقى انهينا المهمة – استنى انهيت إيه الكود هيشتغل من إين يا اسطى
نيجى بقى للكلاس الى هتشغل الكود ده كله

هتلاحظ هنا إن اسمك لما بتكتبه بأى شكل بيطبع مظبوط وبكده يبقى احنا فعلاً أنهينا المهمة
Ashraf Fouda
eng.ashraf.fouda@gmail.com