اولین تسک فنی (یک مسئله) من در یک شرکت بزرگ که به عنوان برنامه نویس Backend در اون مشغول به کار شده بودم، مسئله ای بود که در نگاه اول بسیار عجیب و غریب به نظر می رسید و یک راه حل عجیب و غریب هم براش در نظر گرفته بودن.
داستان از این قرار بود که در نرم افزار شرکت از یک پکیج برای ثبت نام و لاگین کاربر با استفاده از یاهو و گوگل استفاده شده بود و مشکلی که این پکیج داشت این بود که اگر کاربری اکانت یاهو داشت آدرس جی میل خودش رو به عنوان آدرس اصلی یا Primary ثبت میکرد، همون آدرس به برگشت داده میشد و عملا ما کاربری داشتیم که با یاهو ثبت نام کرده اما آدرس ایمیلش به جای @yahoo.com با @gmail.com تموم میشد.
تیم محصول تاکید داشتن کاربر یاهو حتما باید آدرس ایمیل یاهو ازشون گرفته بشه و تیم فنی برای حل این مساله شروع کرده بود به بررسی کدهای اون پکیج. اما راه حل چی بود؟ تیم فنی تصمیم گرفته بود اون کلاسی که مسئول دریافت آدرس ایمیل های کاربران هست رو داخل خود پکیج تغییربده و عملا پکیج رو مجبور کنه که برای کاربران یاهو آدرس یاهو رو برگردونه.
در نگاه اول ساده ترین روش حل مساله همین بود اما دردسر زمانی آغاز شد که با به روز رسانی پکیج ها تمام اون تغییرات از بین میرفت و روز از نو، روزی از نو. چون کدهای بخش پکیج های خارجی هم روی git قرار نمی گرفت عملا track کردن اون کدها امکان پذیر نبود.
راه حل دومی که ارائه شده بود این شکلی بود که اون کلاس به داخل کدهای برنامه کپی شده بود و با استفاده از یک bash script زمانی که پکیج ها به روز رسانی میشدن این کلاس به کلاس اصلی پکیج جایگزین میشد. اما مشکل این راه حل دوم چی بود؟
اگر کدهای اصلی پکیج به هر دلیل تغییر می کرد و ما متوجه نمی شدیم، با کپی کردن کدهای این کلاس عملا امکان بروز خطا به شدت می رفت بالا و در نقطه حساسی که کاربر میخواد لاگین یا ثبت نام کنه سیستم رسما میترکید.
من بعد از بررسی مساله و به خاطر مطالعات زیادی که روی الگوهای طراحی داشتم راه حل استفاده از الگوی طراحی Adapter رو مطرح کردم.
در این روش ما با ایجاد یک کلاس تازه در کدهای برنامه که کلاس مورد نظر داخل پکیج رو توسعه میده و public api اون در بخش دریافت آدرس ایمیل رو بازنویسی میکنه عملا تونستم مشکل رو حل کنم.
الگوهای طراحی چیه؟
بیاید با این سوال شروع کنیم؟ آیا برنامه نویسی چیزی جز حل مساله هست؟ قطعا نه .الگوریتم،ساختمان داده،معماری و همه و همه اینجا هستن تا ما به عنوان یک برنامه نویس یک مسئله رو حل کنیم. حل مساله اولین و مهمترین مهارت یک برنامه نویس محسوب میشه. در برنامه نویسی شما یه ابزار به اسم زبان برنامه نویسی داری که باید با استفاده از امکاناتی که در اختیار شما قرار میده مسئله رو حل کنید.
خب میرسیم به این سوال که آیا برای یک مسئله راه حل های مختلفی می تواند وجود داشته باشه؟ قطعا بله. قطعا برای هر مسئله ای هم راه حل های ساده وجود دارد و هم راه حل های پیچیده و این مورد در دنیای برنامه نویسی هم صدق میکنه.
سوال بعدی که می توانیم مطرح کنیم این است که بهترین روش حل مسئله کدام است؟ بدون شک ساده ترین روش حل مسئله بهترین روش حل مسئله هست و ما همیشه باید در نظر داشته باشیم مهم ترین چیز در توسعه نرم افزار قابلیت نگهداری نرم افزار یا Maintainability هست. پس باید بدونیم که باید بهترین روش حل مساله اونی هست که ساده ترین روش باشه و به قابلیت نگهداری نرم افزار کمک کنه.
Maintainability بالای یک نرم افزار کمک میکنه باگ های اون زودتر شناخته بشن، عملکرد خیلی بهتری داشته باشه و در نهایت نیازهای کسب و کار رو در زمان خیلی کمتری تغییر بده یا اونها رو ایجاد کنه. تمامی اصول توسعه نرم افزار برای این هستن که ما به عنوان برنامه نویس بتونیم نرم افزاری ایجاد کنیم که قابلیت نگهداری بالایی داشته باشه.
الگوهای طراحی به عنوان Best Practice های حل مساله در دنیای کدنویسی شناخته میشن و روش هایی هستن که در نهایت کمک میکنن ما یک نرم افزار با قابلیت نگهداری بالا داشته باشیم. الگوهای طراحی، اختراع (invent) یا ساخته نشدن بلکه به مرور زمان توسط برنامه نویس های مختلف کشف (discover) شدن و به صورت یک سری قاعده abstract معرفی شدن که در مسائل مختلفی میشه ازشون استفاده کرد.
شاید براتون سوال باشه چرا بهشون الگوی طراحی گفته میشه؟
ما در برنامه نویسی بحث طراحی ساختار کدها رو هم داریم. طراحی های مختلف تعیین میکنن بخش های مختلف نرم افزار ما چطوری با هم کار کنن و کیفیت اون چه شکلی باشه. هر چقدر این طراحی بهتر انجام بشه ما یک نرم افزار با قابلیت نگهداری بالاتر خواهیم داشت و هر چقدر ضعیف تر باشه، نرم افزاری خواهیم داشت که دردسرهای توسعه اون به قدری میره بالا که اکثر صاحبان کسب و کار ترجیح میدن اون رو از اول بنویسن (حلقه بی نهایت توسعه از اول) و بارها و بارها هزینه های مجدد بابت اون پرداخت کنن.
طراحی ضعیف در کدها علاوه بر هزینه هایی که برای خود صاحبان کسب و کار در دراز مدت ایجاد میکنه، میل و رغبت برنامه نویسان برای توسعه کد رو هم به شدت کاهش میده. همین خود شما قطعا کدهایی قبلا نوشتی که الان اصلا تمایل نداری بهشون حتی نزدیک بشی.
در نهایت هر برنامه نویسی که به دانش الگوهای طراحی مجهز بشه قطعا از کسانی که این مورد رو بلد نیستن به شدت جلو میفته و می تونه مسائل مختلفی رو حل کنه، اونم نه فقط حل کردن ساده، بلکه یک حل کردن با طراحی کد خوب و تمیز.
چرا الگوهای طراحی مهمه؟
تا حالا به این مورد فکر کردین چرا خیلیا نمی تونن از شی گرایی درست استفاده کنن؟
خیلیا نمی تونن از شی گرایی به صورت درست استفاده کنن و در نهایت با سوالاتی مثل این که اصلا شی گرایی به چه دردی میخوره و چرا باید کدی که با توابع می تونیم بنویسیم و در داخل چیزی به اسم کلاس قرار بدیم از شی گرایی ناامید میشن.
شما برای اینکه بتونید با شی گرایی کد خوب بنویسید باید بدونید چطوری در دنیای واقعی نرم افزار کدها رو کنار هم قرار بدید. بین کلاس ها رابطه ایجاد کنید. براشون قرارداد بنویسید و حد و حدودش رو رعایت کنید
یکی از بهترین روش های یادگیری و تمرین مباحث شی گرایی استفاد از الگوهای طراحی هست. الگوهای طراحی با قابلیت انتزاعی بودنشون کمک میکنن مفاهیم شی گرایی رو بهتر و با کیفیت بیشتری درک کنید و در نتیجه هم کدهای بهتری بنویسید و هم از نتیجه کدهاتون راضی باشید.
یکی از بهترین لذت های دنیای کدنویسی این هست که کدهای شما مشکلی برای دیگران ایجاد نکن، دیگران به راحتی اونارو بخونن و بتونن توسعه بدن و نگهداریشون هم با کمترین هزینه قابل انجام باشه. اگر بتونید به این مرحله برسید، بیشترین لذت رو از کد نویسی می برید.
اکثر شرکت های خارجی و داخلی و مخصوصا اونایی که محصولشون بر اساس زبان های شی گرایی ساخته شده به الگوهای طراحی اهمیت زیادی میدن،چون براشون مهمه که کدی که نوشته میشه کیفیت لازم و کافی رو داشته باشه.
چطوری باید الگوهای طراحی رو یاد بگیریم؟
مهمترین چالشی که هر برنامه نویسی با الگوهای طراحی داره بحث استفاده از اون هست. ممکنه یک نفر از لحاظ تئوری واقعا خوب یاد بگیره اما بازم در استفاده کردن در کدهای واقعی، باهاش مشکل داشته باشه و این چیزیه که خود من به شدت باهاش دست و پنجه نرم کردم.
شما میری و در منابع مختلف بر اساس دسته بندی های مختلف اونارو میخونی و حتی نمونه کدهای اونارو بررسی می کنی و فکر می کنی الان دیگه واقعا یاد گرفتی، اما وقتی به کد اصلی خودت میرسی، هیچ ایده ای نداری که چطوری باید ازشون استفاده کنی.
مهم ترین نکته ای که به خود من کمک کرد الگوهای طراحی رو یاد بگیرم و توی ذهن خودم یک سری قوانین تعیین کنم و بر اساس اون قوانین تشخیص بدم کجا از چه الگوی طراحی استفاده کنم، تمرین مسائل و سر و کله زیاد با اونها بود و شما هم قطعا باید همین مسیر رو بری تا اینها ملکه ذهن شما بشن و در مسائل مختلف به کمک شما بیان.
روش من برای انتقال این تجربه
روش من در این دوره به این صورت خواهد بود که اول از همه تئوری الگو رو بررسی کنیم و بعد در قالب چندین مثال کاربردی در دنیای واقعی نرم افزار به صورت عملی اون رو بررسی کنیم.
چرا باید چند مثال و اونم مثال های واقعی برای هر الگو رو بررسی کنیم؟
خب واقعیت ماجرا اینه که مثال هایی که در اکثر جاها استفاده میشه،بر اساس مسائل صرفا تئوری و کار با موجودیت هایی مثل Car,Book,Animal,Human پیاده سازی شده و به ندرت در نرم افزارهای دنیای واقعی استفاده میشه و به خاطر همین موضوع باید مثال هایی از دنیای واقعی مطرح بشه.
مثلا باید در مورد سبد خرید،لاگ گرفتن، روش های پرداخت،روش ارسال پیام، روش های جمع آوری داده و … صحبت و مسائلی از این جنس مطرح کنیم که شما قطعا در برنامه های واقعی باهاش روبرو خواهید شد و در نهایت هم برای هر مسئله راه حلی مبتنی بر الگوهای طراحی مطرح کنیم.
آیا این دوره به درد من میخوره؟
اگر تازه یک زبان برنامه نویسی شی گرا مثل PHP,Java,TypeScript یاد گرفتی و میخوای یاد بگیری در مراحل پیشرفته تر چطوری باید مسائل رو حل کنی، قطعا این دوره بهت کمک میکنه خیلی راحت تر به هدفت برسی.
بدون شک یکی از مباحث اصلی مصاحبه های استخدامی و سوالات اون برای یک برنامه نویس، بحث الگوهای طراحی محسوب میشه، پس اگر مصاحبه استخدامی و سوالات فنی اون برات یک دغدغه هست قطعا این دوره میتونه بهت کمک کنه.
افزایش مهارت فنی،یکی از راه هایی هست که برنامه نویس می تونه بر اساس اون درخواست افزایش حقوق بده، خب اگر تازه مثلا 6 ماه بیشتر هست که مشغول به کار شدی و تمایل داری حقوقت افزایش پیدا کنه میتونی بر اساس مهارت در الگوهای طراحی که منجر به کدنویسی بهتر میشه درخواست افزایش حقوق بدی.
اگر تمایل داری وارد پروژه های سازمانی بشی و میخوای درک بهتری از شی گرایی داشته باشی،قطعا این دوره کمکت میکنه از یک زاویه دیگه به شی گرایی نگاه کنی.
دوره به چه روشی برگزار میشه؟
در ابتدای دوره با مفاهیم SOLID شروع میکنیم و به صورت کاربردی یاد میگیری که این مفاهیم دقیقا چی هستن، چرا باید ازشون استفاده کرد و کجا باید اونهارو رعایت کنی و به کار بگیری.
تعداد ۱۸ الگوی طراحی که کاربردهای بسیار زیادی دارن و در کتاب های مرجع تعریف شده است که این تعداد در ۳ دسته بندی با نام های Creational, Structural, Behavioral قرار گرفته است. ما بر اساس این دسته بندی ها برای هر الگوی طراحی تعدادی ویدیو شامل تعریف تئوری الگوی طراحی به همراه تعریف و راه حل چند مسئله کاربردی (بر اساس دنیای واقعی نرم افزار) بر اساس همان الگو در اختیارت قرار میدیم.
پیش نیازهای شرکت در این دوره چیه؟
برای اینکه بتونید در دوره شرکت کنید و نتیجه خوبی بگیرید ازش، حتما باید با یک زبان شی گرایی کار کرده باشید و مفاهیم شی گرایی مقدماتی رو بلد باشید.
زمان و روزهای برگزاری دوره چه طوری هست؟
محتوای دوره به صورت ویدیوهای از قبل تهیه شده در اختیار شما قرار میگیره و انتظار میره در یک بازه 3 ماهه بتونید تمام ویدیوها رو هم ببینید و هم تمرین کنید. پیشنهاد میشه در این مدت هر هفته 2 الگوی طراحی رو از طریق ویدیو های آموزشی ببینی و یاد بگیری و تمرین کنی و در نهایت در بخش پرسش و پاسخ وب سایت می تونی سوالات و ابهامات در مورد الگوی های طراحیی آموزش داده شده رو داخلش بپرسی.
این روش جدید کمک میکنه زمان خودت تعیین کنی ویدیوها رو کی ببینی و البته یادت باشه اگر واقعا میخوای از دوره نتیجه بگیری حتما حتما در طول هفته باید ویدیوها رو ببینی و تمرین کنی.
آیا بعد از ثبت نام امکان انصراف وجود داره؟
اگر قبل از شروع دوره انصراف بدی کل مبلغ پرداختی بهت برگشت داده میشه و اگر تا یک ماه بعد از شروع دوره و یادگیری 8 الگوی طراحی، اگر دیدی این دوره به دردت نمیخوره و مناسب تو نیست باز هم میتونی از دوره با خیال راحت انصراف بدی و 100 درصد مبلغ پرداختی رو پس بگیری اما بعد از مدت زمان یک ماه دیگه امکان انصراف از دوره وجود نداره و مبلغی بهت برگشت داده نمیشه.
این دوره واقعا چقدر تاثیر داره؟
بذارید خیلی رک بهتون بگم، این دوره،مثل همه دوره های آموزشی دیگه در دنیا اصلا قرار نیست برای شما معجزه کنه،قرار نیست یک شبه تمام الگوهای طراحی رو ملکه ذهن شما کنه.
این دوره فقط و فقط به شما کمک میکنه مسیر درست رو پیدا کنید و به سمتش برید. این دوره می تونه مدت زمان یادگیری رو برای شما کاهش بده. افراد زیادی هستن که بدون یک دوره خاص هم می تونن به هدفشون برسن اما ممکنه زمان بیشتری نیاز داشته باشن مخصوصا اگر پیش زمینه ای در اون بحث نداشته باشن.
خیلیا هم هستن که دوره شرکت می کنن و تمام تمرکز و تلاش خودشون رو برای دوره میذارن و خیلی سریعتر از بقیه میتونن ازش نتیجه بگیرن. خیلیا هم هستن که در همین دوره شرکت می کنن اما چون براش وقت نمیزارن آخر کار به صورت ناراضی از دوره خارج میشن و برمیگردن سر خونه اولشون.
پس یادتون باشه چیزی که از بقیه موارد مهم تره تمرکز و اولویت قرار دادن یادگیری این موضوع هست، چه میخواد با دوره باشه چه بدون دوره.
آموزش بر اساس چه پلتفرم و زبان برنامه نویسی خواهد بود؟
الگوهای طراحی در بخش مفهومی دنیای توسعه نرم افزار مطرح می شوند و ما هم قصد داریم در این دوره مفهوم پایه ای این الگوهای طراحی را به شما بیاموزیم، در نهایت برای پیاده سازی این الگوها به یک زبان شی گرایی نیاز دارند و در این دوره زبان ما از زبان PHP و همچنین فریمورک Laravel برای پیاده سازی و تمرین الگوها استفاده می کنیم.
باز هم بر این نکته تاکید می کنم که مباحث این دوره کاملا به صورت مفهومی ارائه میشه و نگرانی از بابت پیاده سازی ها وجود نداره. چون در زمان پیاده سازی به زبان های دیگه و مقایسه امکانات اونها هم اشاره میشه.
تفاوت اصلی این دوره با دوره های مشابه چیه؟
الگوهای طراحی مفاهیمی انتزاعی و سخت هستن و من شخصا سال های زیادی رو صرف مطالعه و تمرین اونها کردم تا بتونم به درستی ازشون استفاده کنم و هنوز گاها دچار خطاهایی در این مورد میشم. من خیلی جاها از کتاب های مرجع و آموزش های یوتیوب و مقالات مختلف رو بررسی کردم ولی همه اینها یک مشکل اساسی دارن و اونم این هست که مثال های واقعی در دنیای نرم افزار رو ندارن. اکثر این منابع در مورد ماشین و درخت و کتاب و حیوان و ... صبحت می کنن در حالی که ما در نرم افزارهای واقعی این موارد رو خیلی خیلی کم می بینیم و این دقیقا نقطه ای هست که اکثر کسانی که میخوان با این الگوها کار کنن به مشکل میخورن.
توی این دوره سعی بر این بوده که تمام مثال ها بر اساس مشکلات و مسائل واقعی دنیای نرم افزار مطرح بشه تا هم به راحتی الگوهای طراحی رو درک کنید و هم اینکه توانایی حل مساله با استفاده از شی گرایی شما قوی بشه.
این به نظرم اصلی ترین تفاوت این دوره با تمام دوره هایی هست که در موضوع الگوهای طراحی تا حالا برگزار شده.
آیا این دوره با این قیمت واقعا ارزشش رو داره؟
الان می تونیم بگیم یک توسعه دهنده Junior یه حقوقی بین رنج ۴ الی ۶ میلیون تومن درآمد داره و یه توسعه دهنده Mid-Level بین ۸ الی ۱۲ تومن و در نهایت یک توسعه دهنده Senior از ۱۲ الی ۲۵ تومن حقوق دریافت می کنه.
شما با این دوره شانس این رو به دست میارید که یک پرش خوب در موقعیت شغلی خودتون ایجاد کنید، با یادگیری این الگوها و پیاده سازی واقعی اونها می تونید از شرکت خودتون درخواست افزایش حقوق یا درخواست ارتقای شغلی داشته باشید، پس می تونید با یک حساب سرانگشتی متوجه بشید که این دوره ارزش زیادی از این لحاظ برای شما ایجاد میکنه.
همون طور که قبلا هم گفتم، الگوهای طراحی مفاهیم سخت و انتزاعی هستن که باید مدت زیادی رو براشون وقت بذارید، این دوره به شما کمک میکنه این مدت زمان طولانی شاید چندین ساله رو به 3 ماه کمپرس و فشرده کنید و این یعنی شما از خیلی از هم رده های خودتون می تونید جلوتر باشید. البته بازم تاکید می کنم قرار نیست معجزه کنیم و حتما حتما به تلاش و تمرین خودتون خیلی خیلی احتیاج داره.
در خیلی از مصاحبه های استخدامی داخلی و خارجی از این موضوع سوال پرسیده میشه و تسلط به این آیتم ها می تونه شانس شما رو برای قبولی در استخدام افزایش بده.
هفته اول - اصول 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 و Abstract Factory۸ جلسه
هفته دوم - الگوی طراحی 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 و Adapter۹ جلسه
هفته سوم - الگوی طراحی Builder - مفهوم۱۱ دقیقه
هفته سوم - الگوی طراحی Builder - مثال Request Builder۱۸ دقیقه
هفته سوم - الگوی طراحی Builder - مثال ReOrder۲۱ دقیقه
هفته سوم - الگوی طراحی Builder - بررسی لاراول Query Builder۸ دقیقه
هفته سوم - الگوی طراحی Adapter - بررسی مفهوم۷ دقیقه
هفته سوم - الگوی طراحی Adapter - مثال Payment Provider۱۵ دقیقه
هفته سوم - الگوی طراحی Adapter - مثال Notification۹ دقیقه
هفته سوم - الگوی طراحی Adapter - مثال Task Importer۲۰ دقیقه
هفته سوم - الگوی طراحی Adapter - تمرین۲ دقیقه
۴هفته چهارم - الگوی طراحی Bridge و Composite۹ جلسه
هفته چهارم - الگوی طراحی Bridge - بررسی مفهوم۹ دقیقه
هفته چهارم - الگوی طراحی Bridge - بررسی مثال Payment Module۲۱ دقیقه
هفته چهارم - الگوی طراحی Bridge - بررسی مثال Campaign Manager۲۱ دقیقه
هفته چهارم - الگوی طراحی Bridge - بررسی مثال Survey Manager۱۴ دقیقه
هفته چهارم - الگوی طراحی Composite - بررسی Concept۷ دقیقه
هفته چهارم - الگوی طراحی Composite - کدنویسی Concept۷ دقیقه
هفته چهارم - الگوی طراحی Composite - بررسی مثال Product و Package۱۰ دقیقه
هفته چهارم - الگوی طراحی Composite - بررسی Menu Builder۱۰ دقیقه
هفته چهارم - الگوی طراحی Composite - بررسی Project Management۸ دقیقه
۵هفته پنجم - الگوی طراحی Decorator و Facade۸ جلسه
هفته پنجم - الگوی طراحی Decorator - بررسی مفهوم۹ دقیقه
هفته پنجم - الگوی طراحی Decorator - بررسی مثال Invoice Price۱۵ دقیقه
هفته پنجم - الگوی طراحی Decorator - بررسی مثال User Presenter۱۰ دقیقه
هفته پنجم - الگوی طراحی Decorator - بررسی مثال Report Generator۱۲ دقیقه
هفته پنجم - الگوی طراحی Facade - بررسی مفهوم۶ دقیقه
هفته پنجم - الگوی طراحی Facade - بررسی مثال Order Service۱۸ دقیقه
هفته پنجم - الگوی طراحی Facade - بررسی مثال Media Downloader۸ دقیقه
هفته پنجم - الگوی طراحی Facade - تمرین اعتبارسنجی۲ دقیقه
۶هفته ششم - الگوی طراحی Fly Weight و Proxy۸ جلسه
هفته ششم - الگوی طراحی Flyweight - بررسی Concept۷ دقیقه
هفته ششم - الگوی طراحی Flyweight - بررسی مثال Discount Generator۲۶ دقیقه
هفته ششم - الگوی طراحی Flyweight - بررسی مثال Faker۸ دقیقه
هفته ششم - الگوی طراحی Flyweight - تمرین۱ دقیقه
هفته ششم - الگوی طراحی Proxy - بررسی مفهوم۶ دقیقه
هفته ششم - الگوی طراحی Proxy - مثال Cached Repository۱۰ دقیقه
هفته ششم - الگوی طراحی Proxy - مثال Google API۱۰ دقیقه
هفته ششم - الگوی طراحی Proxy - مثال Cached Download۱۰ دقیقه
۷هفته هفتم - الگوی طراحی Chain of responsibility و Strategy۸ جلسه
هفته هفتم - الگوی طراحی Chain Of Responsibility - بررسی مفهوم۹ دقیقه
هفته هفتم - الگوی طراحی Chain Of Responsibility - مثال Access Product۲۷ دقیقه
هفته هفتم - الگوی طراحی Chain Of Responsibility - مثال Registration Service۱۶ دقیقه
هفته هفتم - الگوی طراحی Chain Of Responsibility - تمرین Loan Service۵ دقیقه
هفته هفتم - الگوی طراحی Strategy - بررسی مفهوم۶ دقیقه
هفته هفتم - الگوی طراحی Strategy - بررسی مثال پرداخت۱۲ دقیقه
هفته هفتم - الگوی طراحی Strategy - بررسی مثال Delivery۹ دقیقه
هفته هفتم - الگوی طراحی Strategy - تمرین۳ دقیقه
۸هفته هشتم - الگوی طراحی Observer و State۷ جلسه
هفته هشتم - الگوی طراحی Observer - بررسی مفهوم۱۱ دقیقه
هفته هشتم - الگوی طراحی Observer - بررسی مثال Product۲۰ دقیقه
هفته هشتم - الگوی طراحی Observer - بررسی مثال Order۱۴ دقیقه
هفته هشتم - الگوی طراحی State - بررسی مفهوم۸ دقیقه
هفته هشتم - الگوی طراحی State - بررسی مثال CMS۱۸ دقیقه
هفته هشتم - الگوی طراحی State - بررسی مثال Order۱۵ دقیقه
هفته هشتم - الگوی طراحی State - تمرین Withdrawal۴ دقیقه
۹هفته نهم - الگوی طراحی Template Method و Command۸ جلسه
الگوی طراحی Template Method - بررسی مفهوم۵ دقیقه
الگوی طراحی Template Method - مثال Reporter۱۷ دقیقه
الگوی طراحی Template Method - مثال Salary۶ دقیقه
الگوی طراحی Template Method - تمرین۲ دقیقه
الگوی طراحی Command - بررسی مفهوم۷ دقیقه
الگوی طراحی Command - مثال Tasks۹ دقیقه
الگوی طراحی Command - مثال File Manager۱۳ دقیقه
الگوی طراحی Command - تمرین ۲ دقیقه
۱۰هفته دهم - الگوی طراحی Mediator و Visitor۸ جلسه
الگوی طراحی Mediator - بررسی مفهوم۵ دقیقه
الگوی طراحی Mediator - مثال Event Dispatcher۱۷ دقیقه
الگوی طراحی Mediator - مثال Chat Room۱۲ دقیقه
الگوی طراحی Mediator - تمرین۱ دقیقه
الگوی طراحی Visitor - بررسی مفهوم۷ دقیقه
الگوی طراحی Visitor - مثال Abstract۹ دقیقه
الگوی طراحی Visitor - مثال Tax۱۱ دقیقه
الگوی طراحی Visitor - مثال File System۱۶ دقیقه
۱۱تمامی محتوای دوره حرفه ای الگوهای طراحی۲ جلسه
جلسه 1منتشر نشده
جلسه 2منتشر نشده
۱۲وبینار ها۶ جلسه
وبینار نقشه راه مهندسی نرم افزار۱ ساعت
وبینار پرسش و پاسخ - هفته دوم۱ ساعت
وبینار پرسش و پاسخ - هفته سوم۱ ساعت
وبینار پرسش و پاسخ هفته چهارم۱ ساعت
وبینار پرسش و پاسخ - هفته آخر۵۷ دقیقه
وبینار نقشه راه مهندسی نرم افزار (دوره جدید)۱ ساعت
۱۳به روزرسانی - پیاده سازی سرویس دسترسی کاربران به محصولات دارای اشتراک۵ جلسه
معرفی ویژگی های سرویس۶ دقیقه
پیاده سازی مدل ها۱۱ دقیقه
پیاده سازی کنترلر۸ دقیقه
پیاده سازی سرویس۲۶ دقیقه
استفاده از سرویس۱۷ دقیقه
مدرسهای دوره
مدرسهایت را بشناس.
مدرس اصلی دوره
مدرس سون لرن
کیوان علیمحمدی
مدیر مهندسی در اسنپفود!
مهندس نرم افزار در شرکت LTP (هلند) Technical Team Lead در شرکت اسنپ فود مهندس نرم افزار در سون لرن مهندس نرم افزار در شرکت کسب و کار ایرانیان - چیلیوری توسعه دهنده فول استک PHP و JavaScript در استارتاپ فول فکر 9 سال تجربه حرفه ای در توسعه نرم افزارهای تحت وب مدرس ۳ دوره متخصص وردپرس سون لرن تدریس بیش از 22000 هزار نفر/ساعت دوره و کارگاه حضوری تولید بیش از 11000 هزار ساعت آموزش ویدیویی برنامه نویسی وب