اولین تسک فنی (یک مسئله) من در یک شرکت بزرگ که به عنوان برنامه نویس 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 الگوی طراحی رو از طریق ویدیوهای آموزشی ببینی و یاد بگیری و تمرین کنی و در نهایت هر سوالی داشتی رو میتونی داخل بخش پرسش و پاسخ وب سایت مطرح کنی.
این روش جدید کمک میکنه زمان خودت تعیین کنی ویدیوها رو کی ببینی و البته یادت باشه اگر واقعا میخوای از دوره نتیجه بگیری حتما حتما در طول هفته باید ویدیوها رو ببینی و تمرین کنی.
این دوره واقعا چقدر تاثیر داره؟
بذارید خیلی رک بهتون بگم، این دوره،مثل همه دورههای آموزشی دیگه در دنیا اصلا قرار نیست برای شما معجزه کنه،قرار نیست یک شبه تمام الگوهای طراحی رو ملکه ذهن شما کنه.
این دوره فقط و فقط به شما کمک میکنه مسیر درست رو پیدا کنید و به سمتش برید. این دوره میتونه مدت زمان یادگیری رو برای شما کاهش بده. افراد زیادی هستن که بدون یک دوره خاص هم میتونن به هدفشون برسن اما ممکنه زمان بیشتری نیاز داشته باشن مخصوصا اگر پیش زمینه ای در اون بحث نداشته باشن.
خیلیا هم هستن که دوره شرکت میکنن و تمام تمرکز و تلاش خودشون رو برای دوره میذارن و خیلی سریعتر از بقیه میتونن ازش نتیجه بگیرن. خیلیا هم هستن که در همین دوره شرکت میکنن اما چون براش وقت نمیزارن آخر کار به صورت ناراضی از دوره خارج میشن و برمیگردن سر خونه اولشون.
پس یادتون باشه چیزی که از بقیه موارد مهم تره تمرکز و اولویت قرار دادن یادگیری این موضوع هست، چه میخواد با دوره باشه چه بدون دوره.
آموزش بر اساس چه پلتفرم و زبان برنامه نویسی خواهد بود؟
الگوهای طراحی در بخش مفهومی دنیای توسعه نرم افزار مطرح میشوند و ما هم قصد داریم در این دوره مفهوم پایه ای این الگوهای طراحی را به شما بیاموزیم، در نهایت برای پیاده سازی این الگوها به یک زبان شی گرایی نیاز دارند و در این دوره زبان انتخاب شده در دنیای محبوب جاوا اسکریپت میباشد که قصد داریم از زبان TypeScript برای پیاده سازی الگوها استفاده کنیم.
باز هم بر این نکته تاکید میکنم که مباحث این دوره کاملا به صورت مفهومی ارائه میشه و نگرانی از بابت پیاده سازیها وجود نداره. چون در زمان پیاده سازی به زبانهای دیگه و مقایسه امکانات اونها هم اشاره میشه.
تفاوت اصلی این دوره با دورههای مشابه چیه؟
الگوهای طراحی مفاهیمی انتزاعی و سخت هستن و من شخصا سالهای زیادی رو صرف مطالعه و تمرین اونها کردم تا بتونم به درستی ازشون استفاده کنم و هنوز گاها دچار خطاهایی در این مورد میشم. من خیلی جاها از کتابهای مرجع و آموزشهای یوتیوب و مقالات مختلف رو بررسی کردم ولی همه اینها یک مشکل اساسی دارن و اونم این هست که مثالهای واقعی در دنیای نرم افزار رو ندارن. اکثر این منابع در مورد ماشین و درخت و کتاب و حیوان و ... صبحت میکنن در حالی که ما در نرم افزارهای واقعی این موارد رو خیلی خیلی کم میبینیم و این دقیقا نقطه ای هست که اکثر کسانی که میخوان با این الگوها کار کنن به مشکل میخورن.
توی این دوره سعی بر این بوده که تمام مثالها بر اساس مشکلات و مسائل واقعی دنیای نرم افزار مطرح بشه تا هم به راحتی الگوهای طراحی رو درک کنید و هم اینکه توانایی حل مساله با استفاده از شی گرایی شما قوی بشه.
این به نظرم اصلیترین تفاوت این دوره با تمام دوره هایی هست که در موضوع الگوهای طراحی تا حالا برگزار شده.
آیا این دوره با این قیمت واقعا ارزشش رو داره؟
الان میتونیم بگیم یک توسعه دهنده Junior یه حقوقی بین رنج ۴ الی ۶ میلیون تومن درآمد داره و یه توسعه دهنده Mid-Level بین ۸ الی ۱۲ تومن و در نهایت یک توسعه دهنده Senior از ۱۲ الی ۲۵ تومن حقوق دریافت میکنه.
شما با این دوره شانس این رو به دست میارید که یک پرش خوب در موقعیت شغلی خودتون ایجاد کنید، با یادگیری این الگوها و پیاده سازی واقعی اونها میتونید از شرکت خودتون درخواست افزایش حقوق یا درخواست ارتقای شغلی داشته باشید، پس میتونید با یک حساب سرانگشتی متوجه بشید که این دوره ارزش زیادی از این لحاظ برای شما ایجاد میکنه.
همون طور که قبلا هم گفتم، الگوهای طراحی مفاهیم سخت و انتزاعی هستن که باید مدت زیادی رو براشون وقت بذارید، این دوره به شما کمک میکنه این مدت زمان طولانی شاید چندین ساله رو به 3 ماه کمپرس و فشرده کنید و این یعنی شما از خیلی از هم ردههای خودتون میتونید جلوتر باشید. البته بازم تاکید میکنم قرار نیست معجزه کنیم و حتما حتما به تلاش و تمرین خودتون خیلی خیلی احتیاج داره.
در خیلی از مصاحبههای استخدامی داخلی و خارجی از این موضوع سوال پرسیده میشه و تسلط به این آیتمها میتونه شانس شما رو برای قبولی در استخدام افزایش بده.
نمایش بیشتر
سرفصلهای دوره
آماده سازی محیط و پیش نیاز ها
۵ جلسه
جلسه اول آماده سازی محیط توسعه
۱۰ دقیقه
جلسه دوم نصب پکیجها و ایجاد ساختار پروژه
۱۳ دقیقه
جلسه سوم نصب ESLint و Express
۱۱ دقیقه
جلسه چهارم اصل Tell, Don\'t Ask
۱۷ دقیقه
جلسه پنجم اصل YAGNI
۹ دقیقه
هفته اول - اصول SOLID در توسعه نرم افزار
۱۶ جلسه
جلسه اول اصول SOLID - مفهوم Single Responsibility
۱۷ دقیقه
جلسه دوم بررسی یک مثال SRP
۱۴ دقیقه
جلسه سوم رفع مشکل نقض SRP
۱۱ دقیقه
جلسه چهارم اصول SOLID - مفهوم Open Closed
۱۷ دقیقه
جلسه پنجم بررسی مثال OCP
۱۱ دقیقه
جلسه ششم رفع مشکل نقض OCP
۲۴ دقیقه
جلسه هفتم اصول SOLID - مفهوم Liskov Substitution
۷ دقیقه
جلسه هشتم بررسی مثال اول نقض LSP
۱۳ دقیقه
جلسه نهم بررسی مثال دوم نقض LSP
۴ دقیقه
جلسه دهم بررسی مثال سوم نقض LSP
۳ دقیقه
جلسه یازدهم بررسی مثال چهارم نقض LSP
۴ دقیقه
جلسه دوازدهم اصول SOLID - مفهوم Interface Segregation
۵ دقیقه
جلسه سیزدهم بررسی مثال نقض ISP
۱۴ دقیقه
جلسه چهاردهم اصول SOLID - مفهوم Dependency Inversion
۸ دقیقه
جلسه پانزدهم بررسی مثال اول DIP
۱۳ دقیقه
جلسه شانزدهم بررسی مثال دوم DIP
۱۴ دقیقه
هفته دوم - الگوی طراحی Factory Method و Abstract Factory
۸ جلسه
جلسه اول مفهوم الگوی طراحی Factory Method
۱۲ دقیقه
جلسه دوم مثال اول Factory Method
۲۲ دقیقه
جلسه سوم مثال دوم Factory Method
۲۰ دقیقه
جلسه چهارم مثال سوم Factory Method
۹ دقیقه
جلسه پنجم مفهوم الگوی طراحی Abstract Factory
۱۰ دقیقه
جلسه ششم مثال اول الگوی طراحی Abstract Factory
۲۱ دقیقه
جلسه هفتم مثال دوم الگوی طراحی Abstract Factory
۱۶ دقیقه
جلسه هشتم تمرین الگوی طراحی Abstract Factory
۴ دقیقه
هفته سوم - الگوی طراحی Builder و Adapter
۸ جلسه
جلسه اول مفهوم الگوی طراحی Builder
۱۱ دقیقه
جلسه دوم مثال اول الگوی طراحی Builder
۱۳ دقیقه
جلسه سوم مثال دوم الگوی طراحی Builder
۱۶ دقیقه
جلسه چهارم مثال سوم الگوی طراحی Builder
۶ دقیقه
جلسه پنجم مفهوم الگوی طراحی Adapter
۷ دقیقه
جلسه ششم مثال اول الگوی طراحی Adapter
۱۳ دقیقه
جلسه هفتم مثال دوم الگوی طراحی Adapter
۷ دقیقه
جلسه هشتم مثال سوم الگوی طراحی Adapter
۱۵ دقیقه
هفته چهارم - الگوی طراحی Bridge و Composite
۹ جلسه
جلسه اول مفهوم الگوی طراحی Bridge
۹ دقیقه
جلسه دوم مثال اول الگوی طراحی Bridge
۲۰ دقیقه
جلسه سوم مثال دوم الگوی طراحی Bridge
۱۴ دقیقه
جلسه چهارم مثال سوم و تمرین الگوی طراحی Bridge
۴ دقیقه
جلسه پنجم مفهوم الگوی طراحی Composite
۷ دقیقه
جلسه ششم مثال اول الگوی طراحی Composite
۵ دقیقه
جلسه هفتم مثال دوم الگوی طراحی Composite
۸ دقیقه
جلسه هشتم مثال سوم از الگوی طراحی Composite
۸ دقیقه
جلسه نهم تمرین الگوی طراحی Composite
۲ دقیقه
هفته پنجم - الگوی طراحی Decorator و Facade
۸ جلسه
جلسه اول مفهوم الگوی طراحی Decorator
۹ دقیقه
جلسه دوم مثال اول الگوی طراحی Decorator
۱۱ دقیقه
جلسه سوم مثال دوم الگوی طراحی Decorator
۱۲ دقیقه
جلسه چهارم مثال سوم و تمرین الگوی طراحی Decorator
۴ دقیقه
جلسه پنجم مفهوم الگوی طراحی Facade
۶ دقیقه
جلسه ششم مثال اول الگوی طراحی Facade
۱۴ دقیقه
جلسه هفتم مثال دوم الگوی طراحی Facade
۱۶ دقیقه
جلسه هشتم مثال سوم و تمرین الگوی طراحی Facade
۴ دقیقه
هفته ششم - الگوی طراحی Flyweight و Proxy
۹ جلسه
جلسه اول مفهوم الگوی طراحی Proxy
۶ دقیقه
جلسه دوم مثال اول الگوی طراحی Proxy
۱۴ دقیقه
جلسه سوم مثال دوم الگوی طراحی Proxy
۹ دقیقه
جلسه چهارم مثال سوم و تمرین الگوی طراحی Proxy
۳ دقیقه
جلسه پنجم مفهوم الگوی طراحی FlyWeight
۷ دقیقه
جلسه ششم مثال اول الگوی طراحی FlyWeight
۱۸ دقیقه
جلسه هفتم مثال دوم الگوی طراحی FlyWeight
۱۰ دقیقه
جلسه هشتم مثال سوم و تمرین الگوی طراحی FlyWeight
۲ دقیقه
جلسه نهم وبینار پرسش و پاسخ
۲۱ دقیقه
هفته هفتم - الگوی طراحی Chain of Responsibility و Command
۸ جلسه
جلسه اول مفهوم الگوی Chain of Responsibility
۹ دقیقه
جلسه دوم مثال اول الگوی طراحی COR
۲۸ دقیقه
جلسه سوم مثال دوم الگوی طراحی COR
۱۴ دقیقه
جلسه چهارم مثال سوم و تمرین الگوی طراحی COR
۳ دقیقه
جلسه پنجم مفهوم الگوی طراحی Command
۷ دقیقه
جلسه ششم مثال اول الگوی طراحی Command
۱۵ دقیقه
جلسه هفتم مثال دوم الگوی طراحی Command
۱۳ دقیقه
جلسه هشتم مثال سوم و تمرین الگوی طراحی Command
۲ دقیقه
الگوی طراحی Observer و State
۷ جلسه
جلسه اول مفهوم الگوی طراحی Observer
۱۱ دقیقه
جلسه دوم مثال اول الگوی طراحی Observer
۱۸ دقیقه
جلسه سوم مثال دوم الگوی طراحی Observer
۶ دقیقه
جلسه چهارم مفهوم الگوی طراحی State
۸ دقیقه
جلسه پنجم مثال اول الگوی طراحی State
۲۳ دقیقه
جلسه ششم مثال دوم الگوی طراحی State
۱۳ دقیقه
جلسه هفتم مثال سوم و تمرین الگوی طراحی State
۴ دقیقه
الگوی طراحی Strategy و Template Method
۸ جلسه
جلسه اول مفهوم الگوی طراحی Strategy
۶ دقیقه
جلسه دوم مثال اول الگوی طراحی Strategy
۱۵ دقیقه
جلسه سوم مثال دوم الگوی طراحی Strategy
۱۰ دقیقه
جلسه چهارم مثال و تمرین الگوی طراحی Strategy
۳ دقیقه
جلسه پنجم مفهوم الگوی طراحی Template Method
۵ دقیقه
جلسه ششم مثال اول الگوی طراحی Template Method
۹ دقیقه
جلسه هفتم مثال دوم الگوی طراحی Template Method
۱۲ دقیقه
جلسه هشتم مثال سوم و تمرین الگوی طراحی Template Method
۴ دقیقه
الگوی طراحی Visitor و Mediator
۸ جلسه
جلسه اول مفهوم الگوی طراحی Visitor
۷ دقیقه
جلسه دوم مثال Abstract از الگوی طراحی Visitor
۱۰ دقیقه
جلسه سوم مثال دوم از الگوی طراحی Visitor
۱۵ دقیقه
جلسه چهارم مثال سوم از الگوی طراحی Visitor
۹ دقیقه
جلسه پنجم مهفوم الگوی طراحی Mediator
۵ دقیقه
جلسه ششم مثال اول الگوی طراحی Mediator
۱۵ دقیقه
جلسه هفتم مثال دوم الگوی طراحی Mediator
۱۰ دقیقه
جلسه هشتم تمرین الگوی طراحی Mediator
۱ دقیقه
وبینارها
۱ جلسه
جلسه اول وبینار نقشه راه مهندسی نرم افزار
۱ ساعت و ۶ دقیقه
نمایش بیشتر
با خیال راحت آموزش ببینید
ضمانت بازگشت وجه
خرید و ثبت نام شما در دورههای بلندمدت سون لرن بدون ریسک مالی
خواهد بود
آموزش مهارت محور
از مدرسین متخصص و با تجربه در بهترین شرکتهای ایران مهارت مورد
نیاز بازار کار را یاد میگیرید
جامعه برنامه نویسی فعال
پشتیبانی و پاسخ به سوالات خود را در جامعه برنامه نویسی فعال سون
لرن دریافت میکنید
ارزیابی فنی و امتیازدهی
برای فعالیتها و آزمونهای خود، امتیازات مختلفی برای ارزیابی
مهارت دریافت میکنید (از آذر 1402)
معرفی برترینها به بازار کار
دانشجویان فعالی که مستمر و منظم محتوای دورهها را دنبال میکنند،
در اولویت معرفی به بازار کار هستند
دسترسی راحت و همیشگی
شما بعد از تهیه دوره به محتوای دوره و آپدیتهای محتوایی دسترسی خواهید داشت
نتایج دورههای متخصص
در ۱۷ سال اخیر بیش از ۳۵ هزار نفر در سون لرن به
صورت تخصصی آموزش برنامه نویسی دیده اند و هزاران نفر از این عزیزان در شرکتهای مختلف استخدام شده
اند.
مهمترین عامل موفقیت دانشپذیرانی که موفق به استخدام و کسب
درآمد پس از دورههای سون لرن بوده اند، نظم و استمرار در پیگیری محتوای دوره و انجام تمرینها و
چالش پذیری آنها بوده است.
برای یادگیری دیزاین پترنها از کجا شروع کنیم؟ آیا پیشنیاز خاصی دارد؟
قبل از شروع آموزش دیزاین پترنها باید یکی از زبانهای برنامه نویسی شی گرایی را بلد باشید. البته الزاما الگوهای طراحی در زبانهای شی گرا استفاده نمیشود در زبان هایی که شی گرا نیستند (زبانهای functional) هم استفاده میشوند.
یادگیری دیزاین پترنها برای من چه مزیتی دارد؟
یادگیری الگوهای طراحی برای هر کسی که در حوزه نرم افزار کار میکند ضروری است. شما با یادگیری الگوهای طراحی، حل مسئله به روش مناسب را یاد میگیرید تا کدهای بهتری بنویسید. در نهایت نوشتن کدهای بهتر باعث افزایش کیفیت نرم افزار میشود. در واقع اگر تسلط کافی در دیزاین پترنها داشته باشید موقعیت شغلی بهتری به دست میآورید و درآمد بیشتری هم خواهید داشت.
یادگیری الگوهای طراحی برای چه افرادی مناسب است؟
یادگیری دیزاین پترنها برای افرادی که در حوزه توسعه نرم افزار کار میکند مناسب است. مهم نیست که شما در چه پارادایمی (functional یا object oriented) کار میکنید. تسلط بر الگوهای طراحی باعث میشود بتوانید کدهای بهتری را طراحی کنید. کدهایی که قابلیت تست پذیری، خوانایی، توسعه پذیری، نگه داری بالاتری دارند. و قطعا افرادی که به الگوهای طراحی مسلط هستند موقعیتهای شغلی و درآمد بهتری دارند.
کاربرد Design Patternها چیست؟
در دنیای نرم افزار برای حل مسئله روشهای زیادی وجود دارد. ما باید روشی را برای حل مسئله انتخاب کنیم که به maintainability نرم افزار کمک کند، خوانایی و تست پذیری را بالا ببرد، قابلیت توسعه پذیری داشته باشد. الگوهای طراحی روشهایی استاندارد برای حل مسئله است که کمک میکند نرم افزاری تولید شود که maintainable باشد. و این موضوع مزایای زیادی برای نرم افزار ایجاد میکند.
الگوی طراحی چیست؟
در دنیای توسعه نرم افزار ما به عنوان برنامه نویس با مسائل مختلفی مواجهیم که باید برای این مسائل راه حل پیدا کنیم. اما اکثرا این مسائل قبلا توسط برنامه نویسهای دیگری شناسایی شدهاند و راه حلی برای آنها ارائه شده است. در واقع الگوهای طراحی راهی برای حل این مسائل است.
انواع Design Patternها چیست؟
الگوهای طراحی سه دسته اصلی دارند:
Creational patterns: معمولا راه حل هایی برای ایجاد کردن آبجکتها (objects) ارائه میدهند. تا کدهایی داشته باشیم که قابلیت reuse داشته باشد.
Structural patterns: کمک میکنند ساختارهای بزرگتری ایجاد کنیم در حالی که انعطاف پذیری و بهینه بودن حفظ شود.
Behavioral patterns: این دسته به الگوریتمها و نحوه انجام کار و responsibility بین آبجکتها مرتبط است و زا این طریق به حل مسئله کمک میکند.
آیا یادگیری دیزاین پترنها برای برنامه نویسهای تایپ اسکریپت ضروری است؟
همان طور که میدانید زبان تایپ اسکریپت کاربرد زیادی دارد و در پروژههای بزرگ زیاد استفاده میشود. پس تمام افرادی که در سمت فرانت اند و بک اند از تایپ اسکریپت استفاده میکنند باید به الگوهای طراحی مسلط باشند. البته تسلط بر دیزاین پترنها برای برنامه نویسهای سمت بک اند که با معماری و ساختارهای نرم افزار درگیر هستند ضروریتر است.
بهترین روش یادگیری دیزاین پترنها چیست؟
وقتی در مورد بهترین روش یادگیری یک زبان برنامه نویسی خاص صحبت میشود باید بدانید که شما باید موارد مختلفی را درنظر بگیرید. من دو مورد از مهمترینها را اینجا مطرح میکنم.
همیشه قبل از شروع یادگیری برنامه نویسی این دو سوال مطرح میشود:
آیا بهتر است به صورت self study یاد بگیریم یا یک مشاور و یک منبع جامع داشته باشیم؟ واقعیت این است هر دو روش شما را به هدفتان میرساند اما زمان رسیدن متفاوت است. ممکن است یادگیری هر زبان برنامه نویسی به صورت self study بین ۲ تا ۳ سال زمان نیاز داشته باشد. ولی اگر یک منبع آموزشی جامع با مدرس باتجربه داشته باشید که حتی پاسخگوی سوالات شما باشد آن مسیر ۳ ساله میتواند به یکسال تبدیل شود. من توصیه میکنم که اگر زمان برای شما مهم است مسیر دوم را انتخاب کنید.
به چه صورت برای یادگیری برنامه نویسی اقدام کنیم که نتیجه بهتری بگیریم؟ واقعیت این است که برنامه نویس بهتر کسی است که قدرت حل مسئله بهتری دارد. و این توانایی با حل مسئله و چالشپذیری به دست میآید. پس بهتر است در طول یادگیری تمرین کنید، برای خودتان پروژه تعریف کنید و در قالب پروژه چالشهایی را برای خودتان طرح کنید و آن چالشها را در کنار آموزشهایی که میبینید حل کنید. مواردی که در فرآیند چالشها یاد میگیرید محال است که فراموش کنید.
پس اگر با یک مدرس با تجربه و معتبر و تمرین و چالشپذیری یادگیری را شروع کنید مطمئن باشید بهترین نتیجه را میگیرید.