Skip to main content

Adapter Design Pattern 😃

 Adapter Design Pattern 😃





لو افترضنا انك عامل integration مع بوابة دفع و مستخدم interface والي بتحتوي علي methods زي (auth , prepare , pay)

و انطلب انك هتضيف بوابة دفع تانية لكن هنا

هتستخدم third party library في الـ integration و بالفعل مش هينفع تستخدم interface الي كنت عاملها و دا بسبب ان integration هنا محتاج فقط (pay method )

طبعا استخدامك لنفس interface مفروغ منه علشان SOLID و حاجات تانية

تفتكر اي الحل ؟

الحل هنا ببساطه انك تجيب حاجه زي موصل أو converter يقدر يخلي

new integration class تتناسب مع current interface و دا هيبقي Adapter .


- دا يعتبر أول pattern هيتم شرحه في مجموعة structural patterns و الي بتحل لك

مشاكل structure code و بيستخدم بكثرة عند إنشاء frameworks .


هتلاقي مرفق مثال مشهور أوي و هوه ان شاحن الموبايل بيبقي ثلاثي علشان تقدر

تستخدمه بتحتاج converter و الي هوه هنا

بيمثل adapter class

Comments

Popular posts from this blog

Laravel Project does not need apache

من الحاجات الغريبة الي اكتشفتها بالصدفة كدا و وقفت قدامها فترة مش فاهم حاجه ... استغربت ان زميلي يعمل run لمشروع Laravel بدون ما يعمل run لل apache server .. php artisan serve بفضل الله لما ركزت كدا شوية روحت اقرأ ملف server.php الي موجود في root folder of laravel project و لقيت السطرين دول الي في screen -------------------- لارافيل معتمد علي built-in PHP web server و بالتالي مش محتاج apache server علشان تعمل run لل project -------------------- من الأسئلة المهمة هنا : هل ممكن نستبدل apache او nginx ب php server ؟ الاجابة باختصار لا و السبب ان السيرفر دا في الاساس اتعمل من أجل developers وليس full feature .. شوف التحذير الي في أول manual هنا PHP Manual References : Github Laravel server.php https://stackoverflow.com/questions/27485505/symfony-apache-vs-built-in-php-server https://www.php.net/manual/en/features.commandline.webserver.php

Software Architecture Styles

تعالوا نتكلم "صنعة باك-إند" بعيداً عن خناقات الفريموركس والمقارنات السطحية. لو سألت أي مطور باك-إند لسه بيبدأ: "إنت بتنظم كودك إزاي؟"، غالباً الإجابة هتكون: "بعمل فولدر للـ Controllers وفولدر للـ Models .. إلخ". لكن لما الـ Scale بيكبر، والـ Requests بتدخل في ملايين، والبزنس شروطه بتتغير كل أسبوع، تنظيم الفولدرات ده مش هيحيلك مشكلة. هنا بقى بنبدأ نتكلم Software Architecture Styles . الـ Architecture مش رفاهية، دي الطريقة اللي السيستم بتاعك بيتنفس بيها. تعالوا نفصص الـ 10 أنواع الأشهر في عالم الـ Back-end والـ System Design عشان ننقل تفكيرنا من مجرد "كاتب كود" لـ "مهندس أنظمة": 1. Monolithic Architecture (الكل في واحد) ده البداية الطبيعية لأي مشروع في الدنيا. الكود كله عبارة عن كتلة واحدة ( Single Unit )، الـ UI والـ Business Logic والـ Database Access كله عايش في نفس الـ Repository ويدخل له Deploy مع بعضه. اللقطة بتاعته: سريع جداً في التطوير والـ Testing في الأول، والـ Deploy بت...