من الأشياء التي يتهكم فيها مطوروا الFunctional Programming على الOOP هي حاجة الأخيرين للDesign Patterns و في الفيديو ستجد أنهم يقولون انهم لا يحتاجون لكل هذه الPatterns. نفس الحال حصل لما نزل كتاب GoF تهكم مبرمجوا Smalltalk على مبرمجي ++C.
(شوية افكار)
youtu.be
(شوية افكار)
youtu.be
كان مبرمجي Smalltalk على حق نوعاً ما فSmalltalk لغة OOP اكثر من اللغات التي نعرفها اليوم فهي لغة مبتكر الOOP نفسه لكن حتى مع ذلك كانوا يحتاجون على الاقل بعض الDesign patterns التي سردت في ذلك الكتاب.
للأسف اغلب المراجع تعلم الDesign patterns بطريقة السرد بعد أن تقسمها إلى 3 أقسام أو 4 إذا لم تلتزم بما ورد في كتاب الGoF. لكن في العالم الحقيقي الأمور اشبه بشجرة متداخلة. اتوقع ممكن تعليمها بطريقة سببية افضل من مجرد السرد لكن لا أعرف حتى الآن كيف لكن ربما اجيب عن لماذا.
الDesign patterns ليست رفاهية برمجية هي فرق بين مبرمج ماهر و اخر عادي. لأن مانعرفه الان كـ Object Oriented Programming ليست النسخة الأصلية كما يفترض أن تكون و لذا السبب مبرمجي Smalltalk اقل حاجة لها من مبرمجي جافا او سي شارب بي اتش بي و بايثون و غيرها.
ليس للDesign patterns بحد ذاتها بل يتعدى إلى الDependecy Injection مثلاً فهو تكنيك مهم الآن لكن ليس بجديد على من يعرف الStrategy Pattern. و تتعدى ايضاً إلى مفهوم الInversion of Control او الIoC الذي لاجله وجد الDI فهو يمكن تنفيذه بواسطة الTemplate Method و الObserver Pattern.
مثال آخر و هو الMVC المشهور ( ليس design pattern ) في بناء تطبيقات الويب مع انه اقدم من كتاب الGoF و لا أعلم كيف نُفذ في بدايته إلا ان اطر عمل مثل net. و spring لتجعل ذلك ممكنا في سي شارب و اجافا تحتاج فقط إلى ثلاثة انماط تصميم لكن جافا و net. سهلوه لنا بإخفاء تلك التفاصيل.
ستجد مقالات كثيرة بعناوين مثل اهم 3 انماط تصميم او اهم 5. هي كلها مهمة لكن قد لا تحتاجها الان لتحل مشكلتك. لكن من الافضل ان تكون حاضرة في ذهنك كأي شيء اخر في الحياة نعرف بسبب الممارسة او التعلم طريقة او طريقتين للتعامل معه قد يجهلها الشخص العادي.
اذكر اني تعرفت على الSigelton في 2001 و تعلمته مباشرة زميل اكثر خبرة مني شرحت له مشكلتي في عداد زوار موقع بعدها تعلمت الCommand pattern لأجل تفعيل خاصية Undo. لم أنسى لأنها أتت في وقتها كحل سحري و نظيف.
جاري تحميل الاقتراحات...