دوره الگوهای طراحی حرفه ای PHP سون لرن
محتوای این دوره، شامل ویدئوها، فایلهای پیوست، پروژهها و یادداشتها، با هدف یادگیری سریعتر و مؤثرتر طراحی شدهاند. تمامی دوره های رایگان کده بهصورت رایگان و همچنین از طریق خرید اشتراکی در دسترس بوده و سعی شده همواره تمامی دوره ها بدون قفل و دارای آخرین آپدیت باشند. دوره ها فقط از سمت ربات تلگرامی رایگان کده قابل دانلود هستند.
دوره الگوهای طراحی حرفه ای PHP سون لرن
محتوای این دوره، شامل ویدئوها، فایلهای پیوست، پروژهها و یادداشتها، با هدف یادگیری سریعتر و مؤثرتر طراحی شدهاند. تمامی دوره های رایگان کده بهصورت رایگان و همچنین از طریق خرید اشتراکی در دسترس بوده و سعی شده همواره تمامی دوره ها بدون قفل و دارای آخرین آپدیت باشند.
این دوره تا آخرین پارت منتشر شده از سوی سازنده (استفاده از سرویس) قرار گرفته است!
این دوره بدون هیچ لایسنس و قفل نرمافزاری با فرمت MP4 قرار گرفته است!
الگوهای طراحی چیه؟
بیاید با این سوال شروع کنیم؟ آیا برنامه نویسی چیزی جز حل مساله هست؟ قطعا نه .الگوریتم،ساختمان داده،معماری و همه و همه اینجا هستن تا ما به عنوان یک برنامه نویس یک مسئله رو حل کنیم. حل مساله اولین و مهمترین مهارت یک برنامه نویس محسوب میشه. در برنامه نویسی شما یه ابزار به اسم زبان برنامه نویسی داری که باید با استفاده از امکاناتی که در اختیار شما قرار میده مسئله رو حل کنید.
خب میرسیم به این سوال که آیا برای یک مسئله راه حلهای مختلفی میتواند وجود داشته باشه؟ قطعا بله. قطعا برای هر مسئله ای هم راه حلهای ساده وجود دارد و هم راه حلهای پیچیده و این مورد در دنیای برنامه نویسی هم صدق میکنه.
سوال بعدی که میتوانیم مطرح کنیم این است که بهترین روش حل مسئله کدام است؟ بدون شک سادهترین روش حل مسئله بهترین روش حل مسئله هست و ما همیشه باید در نظر داشته باشیم مهمترین چیز در توسعه نرم افزار قابلیت نگهداری نرم افزار یا Maintainability هست. پس باید بدونیم که باید بهترین روش حل مساله اونی هست که سادهترین روش باشه و به قابلیت نگهداری نرم افزار کمک کنه.
Maintainability بالای یک نرم افزار کمک میکنه باگهای اون زودتر شناخته بشن، عملکرد خیلی بهتری داشته باشه و در نهایت نیازهای کسب و کار رو در زمان خیلی کمتری تغییر بده یا اونها رو ایجاد کنه. تمامی اصول توسعه نرم افزار برای این هستن که ما به عنوان برنامه نویس بتونیم نرم افزاری ایجاد کنیم که قابلیت نگهداری بالایی داشته باشه.
الگوهای طراحی به عنوان Best Practiceهای حل مساله در دنیای کدنویسی شناخته میشن و روش هایی هستن که در نهایت کمک میکنن ما یک نرم افزار با قابلیت نگهداری بالا داشته باشیم. الگوهای طراحی، اختراع (invent) یا ساخته نشدن بلکه به مرور زمان توسط برنامه نویسهای مختلف کشف (discover) شدن و به صورت یک سری قاعده abstract معرفی شدن که در مسائل مختلفی میشه ازشون استفاده کرد.
شاید براتون سوال باشه چرا بهشون الگوی طراحی گفته میشه؟
ما در برنامه نویسی بحث طراحی ساختار کدها رو هم داریم. طراحیهای مختلف تعیین میکنن بخشهای مختلف نرم افزار ما چطوری با هم کار کنن و کیفیت اون چه شکلی باشه. هر چقدر این طراحی بهتر انجام بشه ما یک نرم افزار با قابلیت نگهداری بالاتر خواهیم داشت و هر چقدر ضعیفتر باشه، نرم افزاری خواهیم داشت که دردسرهای توسعه اون به قدری میره بالا که اکثر صاحبان کسب و کار ترجیح میدن اون رو از اول بنویسن (حلقه بی نهایت توسعه از اول) و بارها و بارها هزینههای مجدد بابت اون پرداخت کنن.
طراحی ضعیف در کدها علاوه بر هزینه هایی که برای خود صاحبان کسب و کار در دراز مدت ایجاد میکنه، میل و رغبت برنامه نویسان برای توسعه کد رو هم به شدت کاهش میده. همین خود شما قطعا کدهایی قبلا نوشتی که الان اصلا تمایل نداری بهشون حتی نزدیک بشی.
در نهایت هر برنامه نویسی که به دانش الگوهای طراحی مجهز بشه قطعا از کسانی که این مورد رو بلد نیستن به شدت جلو میفته و میتونه مسائل مختلفی رو حل کنه، اونم نه فقط حل کردن ساده، بلکه یک حل کردن با طراحی کد خوب و تمیز.
چرا الگوهای طراحی مهمه؟
تا حالا به این مورد فکر کردین چرا خیلیا نمیتونن از شی گرایی درست استفاده کنن؟
خیلیا نمیتونن از شی گرایی به صورت درست استفاده کنن و در نهایت با سوالاتی مثل این که اصلا شی گرایی به چه دردی میخوره و چرا باید کدی که با توابع میتونیم بنویسیم و در داخل چیزی به اسم کلاس قرار بدیم از شی گرایی ناامید میشن.
شما برای اینکه بتونید با شی گرایی کد خوب بنویسید باید بدونید چطوری در دنیای واقعی نرم افزار کدها رو کنار هم قرار بدید. بین کلاسها رابطه ایجاد کنید. براشون قرارداد بنویسید و حد و حدودش رو رعایت کنید
یکی از بهترین روشهای یادگیری و تمرین مباحث شی گرایی استفاد از الگوهای طراحی هست. الگوهای طراحی با قابلیت انتزاعی بودنشون کمک میکنن مفاهیم شی گرایی رو بهتر و با کیفیت بیشتری درک کنید و در نتیجه هم کدهای بهتری بنویسید و هم از نتیجه کدهاتون راضی باشید.
یکی از بهترین لذتهای دنیای کدنویسی این هست که کدهای شما مشکلی برای دیگران ایجاد نکن، دیگران به راحتی اونارو بخونن و بتونن توسعه بدن و نگهداریشون هم با کمترین هزینه قابل انجام باشه. اگر بتونید به این مرحله برسید، بیشترین لذت رو از کد نویسی میبرید.
اکثر شرکتهای خارجی و داخلی و مخصوصا اونایی که محصولشون بر اساس زبانهای شی گرایی ساخته شده به الگوهای طراحی اهمیت زیادی میدن،چون براشون مهمه که کدی که نوشته میشه کیفیت لازم و کافی رو داشته باشه.
- اصول طراحی شی گرا – Tell Don’t Ask
- اصول طراحی شی گرا – YAGNI
- هفته اول – کانفیگ کردن PHPStorm
- هفته اول – اصول SOLID – اصل Single Responsibility – مفهوم
- هفته اول – اصول SOLID – اصل Single Responsibility – بررسی مشکل
- هفته اول – اصول SOLID – اصل Single Responsibility – بررسی راه حل
- هفته اول – اصول SOLID – اصل Open Close – بررسی مفهوم
- هفته اول – اصول SOLID – اصل Open Close – بررسی مشکل
- هفته اول – اصول SOLID – اصل Open Close – بررسی راه حل
- هفته اول – اصول SOLID – اصل Liskov Substitution – بررسی مفهوم
- هفته اول – اصول SOLID – اصل Liskov Substitution – بخش اول
- هفته اول – اصول SOLID – اصل Liskov Substitution – بخش دوم
- هفته اول – اصول SOLID – اصل Liskov Substitution – بخش سوم
- هفته اول – اصول SOLID – اصل Liskov Substitution – بخش چهارم
- هفته اول – اصول SOLID – اصل Interface Segregation – بررسی مفهوم
- هفته اول – اصول SOLID – اصل Interface Segregation – بررسی نمونه کد
- هفته اول – اصول SOLID – اصل Dependency Inversion – بررسی مفهوم
- هفته اول – اصول SOLID – اصل Dependency Inversion – بررسی کد – بخش اول
- هفته اول – اصول SOLID – اصل Dependency Inversion – بررسی کد – بخش دوم
- هفته دوم – الگوی طراحی Factory Method – بررسی مفهوم
- هفته دوم – الگوی طراحی Factory Method – بررسی مثال Publisher
- هفته دوم – الگوی طراحی Factory Method – مثال Account Registry
- هفته دوم – الگوی طراحی Factory Method – مثال Logger
- هفته دوم – الگوی طراحی Abstract Factory – بررسی مفهوم
- هفته دوم – الگوی طراحی Abstract Factory – بررسی مثال Form Builder
- هفته دوم – الگوی طراحی Abstract Factory – بررسی مثال Document Builder
- هفته دوم – الگوی طراحی Abstract Factory – تمرین Product Presenter
- هفته سوم – الگوی طراحی Builder – مفهوم
- هفته سوم – الگوی طراحی Builder – مثال Request Builder
- هفته سوم – الگوی طراحی Builder – مثال ReOrder
- هفته سوم – الگوی طراحی Builder – بررسی لاراول Query Builder
- هفته سوم – الگوی طراحی Adapter – بررسی مفهوم
- هفته سوم – الگوی طراحی Adapter – مثال Payment Provider
- هفته سوم – الگوی طراحی Adapter – مثال Notification
- هفته سوم – الگوی طراحی Adapter – مثال Task Importer
- هفته سوم – الگوی طراحی Adapter – تمرین
- هفته چهارم – الگوی طراحی Bridge – بررسی مفهوم
- هفته چهارم – الگوی طراحی Bridge – بررسی مثال Payment Module
- هفته چهارم – الگوی طراحی Bridge – بررسی مثال Campaign Manager
- هفته چهارم – الگوی طراحی Bridge – بررسی مثال Survey Manager
- هفته چهارم – الگوی طراحی Composite – بررسی Concept
- هفته چهارم – الگوی طراحی Composite – کدنویسی Concept
- هفته چهارم – الگوی طراحی Composite – بررسی مثال Product و Package
- هفته چهارم – الگوی طراحی Composite – بررسی Menu Builder
- هفته چهارم – الگوی طراحی Composite – بررسی Project Management
- هفته پنجم – الگوی طراحی Decorator – بررسی مفهوم
- هفته پنجم – الگوی طراحی Decorator – بررسی مثال Invoice Price
- هفته پنجم – الگوی طراحی Decorator – بررسی مثال User Presenter
- هفته پنجم – الگوی طراحی Decorator – بررسی مثال Report Generator
- هفته پنجم – الگوی طراحی Facade – بررسی مفهوم
- هفته پنجم – الگوی طراحی Facade – بررسی مثال Order Service
- هفته پنجم – الگوی طراحی Facade – بررسی مثال Media Downloader
- هفته پنجم – الگوی طراحی Facade – تمرین اعتبارسنجی
- هفته ششم – الگوی طراحی Flyweight – بررسی Concept
- هفته ششم – الگوی طراحی Flyweight – بررسی مثال Discount Generator
- هفته ششم – الگوی طراحی Flyweight – بررسی مثال Faker
- هفته ششم – الگوی طراحی Flyweight – تمرین
- هفته ششم – الگوی طراحی Proxy – بررسی مفهوم
- هفته ششم – الگوی طراحی Proxy – مثال Cached Repository
- هفته ششم – الگوی طراحی Proxy – مثال Google API
- هفته ششم – الگوی طراحی Proxy – مثال Cached Download
- هفته هفتم – الگوی طراحی Chain Of Responsibility – بررسی مفهوم
- هفته هفتم – الگوی طراحی Chain Of Responsibility – مثال Access Product
- هفته هفتم – الگوی طراحی Chain Of Responsibility – مثال Registration Service
- هفته هفتم – الگوی طراحی Chain Of Responsibility – تمرین Loan Service
- هفته هفتم – الگوی طراحی Strategy – بررسی مفهوم
- هفته هفتم – الگوی طراحی Strategy – بررسی مثال پرداخت
- هفته هفتم – الگوی طراحی Strategy – بررسی مثال Delivery
- هفته هفتم – الگوی طراحی Strategy – تمرین
- هفته هشتم – الگوی طراحی Observer – بررسی مفهوم
- هفته هشتم – الگوی طراحی Observer – بررسی مثال Product
- هفته هشتم – الگوی طراحی Observer – بررسی مثال Order
- هفته هشتم – الگوی طراحی State – بررسی مفهوم
- هفته هشتم – الگوی طراحی State – بررسی مثال CMS
- هفته هشتم – الگوی طراحی State – بررسی مثال Order
- هفته هشتم – الگوی طراحی State – تمرین Withdrawal
- الگوی طراحی Template Method – بررسی مفهوم
- الگوی طراحی Template Method – مثال Reporter
- الگوی طراحی Template Method – مثال Salary
- الگوی طراحی Template Method – تمرین
- الگوی طراحی Command – بررسی مفهوم
- الگوی طراحی Command – مثال Tasks
- الگوی طراحی Command – مثال File Manager
- الگوی طراحی Command – تمرین
- الگوی طراحی Mediator – بررسی مفهوم
- الگوی طراحی Mediator – مثال Event Dispatcher
- الگوی طراحی Mediator – مثال Chat Room
- الگوی طراحی Mediator – تمرین
- الگوی طراحی Visitor – بررسی مفهوم
- الگوی طراحی Visitor – مثال Abstract
- الگوی طراحی Visitor – مثال Tax
- الگوی طراحی Visitor – مثال File System
- وبینار نقشه راه مهندسی نرم افزار
- وبینار پرسش و پاسخ – هفته دوم
- وبینار پرسش و پاسخ – هفته سوم
- وبینار پرسش و پاسخ هفته چهارم
- وبینار پرسش و پاسخ – هفته آخر
- وبینار نقشه راه مهندسی نرم افزار (دوره جدید)
- معرفی ویژگیهای سرویس
- پیاده سازی مدل ها
- پیاده سازی کنترلر
- پیاده سازی سرویس
- استفاده از سرویس
- این دوره مناسب چه کسانی است؟
- یادگیری در مراحل پیشرفته: اگر تازه یک زبان برنامهنویسی شی گرا مانند PHP، Java یا TypeScript یاد گرفتهای و میخواهی به مراحل پیشرفتهتر برسی، این دوره بهت کمک میکند تا راههای حل مسائل را به راحتی درک کنی و به هدفت برسی.
- مسائل مصاحبه استخدامی: برای برنامهنویسان، آشنایی با الگوهای طراحی یکی از مباحث اصلی مصاحبههای استخدامی است. این دوره به توسعه دانش و مهارتهای لازم برای موفقیت در مصاحبههای استخدامی کمک میکند.
- افزایش مهارتهای فنی: یکی از راههای افزایش حقوق برنامهنویسان، افزایش مهارتهای فنی است. این دوره با آموزش الگوهای طراحی و بهبود کدنویسی، به توسعه مهارتهای فنی کمک میکند و میتواند در درخواست افزایش حقوق موثر باشد.
- ورود به پروژههای سازمانی: اگر میخواهی وارد پروژههای سازمانی شوی و بهترین عملکرد را داشته باشی، آشنایی با الگوهای طراحی و شی گرایی اهمیت زیادی دارد. این دوره به دیدگاهی جدید از شی گرایی نگاه میکند و میتواند به توسعه کارآمدی در پروژههای سازمانی کمک کند.
- این دوره مناسب چه کسانی نیست؟
- مبتدیان PHP: اگر شما تازهکار در زمینه PHP هستید و با مفاهیم پایه آن آشنایی ندارید، این دوره ممکن است برای شما مناسب نباشد. بهتر است ابتدا با مفاهیم پایهای PHP آشنا شوید و سپس به دورههای پیشرفته مراجعه کنید.
- افرادی که به دنبال آموزش عمیق در زمینه PHP هستند: اگر شما به دنبال آموزش عمیق در مورد جزئیات زبان PHP و کار با آن هستید، این دوره ممکن است کافی نباشد. این دوره بیشتر بر روی الگوهای طراحی و معماری نرمافزار تمرکز دارد و به توسعهدهندگانی که قصد دارند در حوزه توسعه نرمافزارهای پیچیده PHP فعالیت کنند، مفید است.
- افرادی که به دنبال فرصت شغلی در حوزه PHP نیستند: اگر شما به دنبال یک فرصت شغلی در حوزه PHP نیستید و فقط به دنبال آموزش برای افزایش دانش خود هستید، این دوره ممکن است برای شما مفید نباشد. این دوره بیشتر برای توسعهدهندگان حرفهای PHP و افرادی که به صورت حرفهای در زمینه توسعه نرمافزار فعالیت میکنند، مناسب است.
قبل از شروع آموزش دیزاین پترنها باید یکی از زبانهای برنامه نویسی شی گرایی را بلد باشید. البته الزاما الگوهای طراحی در زبانهای شی گرا استفاده نمیشود در زبان هایی که شی گرا نیستند (زبانهای functional) هم استفاده میشوند.
یادگیری الگوهای طراحی برای هر کسی که در حوزه نرم افزار کار میکند ضروری است. شما با یادگیری الگوهای طراحی، حل مسئله به روش مناسب را یاد میگیرید تا کدهای بهتری بنویسید. در نهایت نوشتن کدهای بهتر باعث افزایش کیفیت نرم افزار میشود. در واقع اگر تسلط کافی در دیزاین پترنها داشته باشید موقعیت شغلی بهتری به دست میآورید و درآمد بیشتری هم خواهید داشت.
یادگیری دیزاین پترنها برای افرادی که در حوزه توسعه نرم افزار کار میکند مناسب است. مهم نیست که شما در چه پارادایمی (functional یا object oriented) کار میکنید. تسلط بر الگوهای طراحی باعث میشود بتوانید کدهای بهتری را طراحی کنید. کدهایی که قابلیت تست پذیری، خوانایی، توسعه پذیری، نگه داری بالاتری دارند. و قطعا افرادی که به الگوهای طراحی مسلط هستند موقعیتهای شغلی و درآمد بهتری دارند.
در دنیای نرم افزار برای حل مسئله روشهای زیادی وجود دارد. ما باید روشی را برای حل مسئله انتخاب کنیم که به maintainability نرم افزار کمک کند، خوانایی و تست پذیری را بالا ببرد، قابلیت توسعه پذیری داشته باشد. الگوهای طراحی روشهایی استاندارد برای حل مسئله است که کمک میکند نرم افزاری تولید شود که maintainable باشد. و این موضوع مزایای زیادی برای نرم افزار ایجاد میکند.
در دنیای توسعه نرم افزار ما به عنوان برنامه نویس با مسائل مختلفی مواجهیم که باید برای این مسائل راه حل پیدا کنیم. اما اکثرا این مسائل قبلا توسط برنامه نویسهای دیگری شناسایی شدهاند و راه حلی برای آنها ارائه شده است. در واقع الگوهای طراحی راهی برای حل این مسائل است.
الگوهای طراحی سه دسته اصلی دارند:
Creational patterns: معمولا راه حل هایی برای ایجاد کردن آبجکتها (objects) ارائه میدهند. تا کدهایی داشته باشیم که قابلیت reuse داشته باشد.
Structural patterns: کمک میکنند ساختارهای بزرگتری ایجاد کنیم در حالی که انعطاف پذیری و بهینه بودن حفظ شود.
Behavioral patterns: این دسته به الگوریتمها و نحوه انجام کار و responsibility بین آبجکتها مرتبط است و زا این طریق به حل مسئله کمک میکند.