سلام دوستان امیدوارم حالتون خوب باشه من سعید قاسمی هستم از سال ۹۵ برنامه نویسی Back-end رو شروع کردم و سرآغاز راهم با زبان PHP بود :دی
پس از مدتی سراغ فریمورک محبوب لاراول رفتم و تا سال پیش که با Flutter آشنا شدم و کلا استک کاریم رو عوض کردم :)
مبحث الگوهای طراحی یکی از مباحث فرار برنامه نویسی هستش که اگه با کاربردشون اشنا نباشید و ازشون تو جاهای مخصوص خودشون استفاده کنید از ذهنتون فرار میکنه...
حالا من میخوام یه سلسله مقالاتی راجب پیاده سازی الگوهای طراحی تو زبان Dart بنویسم که امیدوارم مفید واقع بشه، این پست بعد از انتشار هر کدوم از الگوها آپدیت میشه پس اینجا رو ذخیره داشته باشید...
خب اول از همه یه مروری داشته باشیم به Design Patterns و این که ببینیم اصلا چطور به وجود اومدن؟و چرا؟
الگوی طراحی چیست؟
یه Design Pattern یه راه حل برای یه سری مشکلات رایج توسعه نرم افزار هستش و مثل یه سری طرح های پیش ساخته هستن که مشکلات طراحی تو کدتون رو میتونید با استفاده از اونا برطرف کنید.
اغلب الگوها رو با الگوریتم اشتباه می گیرند چون جفتشون دنبال یه سری راه حل برای یه سری مسائل خاص هستن، اما این دو مقوله جدا از هم هستش، الگوریتم یه سری عملیات خاص رو برای رسیدن به یه سری هدف دنبال می کنه اما الگو تعریف دقیق تر و واضح تری از راه حل هستش.
طراحی الگوریتم مثل اشپزی کردن از روی دستورالعمل پخت یه غذا هستش یه سری مراحل خاص دارن تا به یه غذای خوشمزه برسید :دی اما الگو بیشتر شبیه یک طرح هستش که تو نتایج و ویژگی هاش رو میبینی اما این که چطوری مراحل رو طی کنی تا به اون غذای خوشمزه برسی به خودت بستگی داره.
تاریخچه
این که بگیم الگوهای طراحی توسط چه کسی به وجود اومد سوال انچنان دقیقی نیست، الگوهای طراحی برای رفع یه سری مشکلات نرم افزاری شی گرا به وجود اومدن. وقتی یه راه حل به وفور تو پروژه های مختلف استفاده میشه یه نفر اون راه حل رو کشف میکنه و یه اسم روش میذاره و به عنوان یه راه حل عمومی معرفی میکنه اینجوریه که الگوی طراحی کشف میشه.
مفهوم اولیه الگوهای طراحی توسط آقای Christopher Alexander در کتابی به نام Design Patterns: Elements of Reusable Object-Oriented Software این کتاب یک زبان رو برای طراحی یه محیط شهری معرفی کرده. توسط این الگوها ارتفاع پنجره ها، تعداد طبقات یک ساختمان و مساحت محیط سبز اطراف خونه مشخص می شدند.
این ایده چند سال بعد توسط ۴ نفر به نام های Erich Gamma, John Vlissides, Ralph Johnson, Richard Helm برداشته شد و در سال ۱۹۹۴ در کتابی با عنوان Design Patterns: Elements of Reusable Object-Oriented Software منتشر شد که به بحث راجب مفاهیم الگوهای طراحی حول زبان های شی گرا پرداخته شده. داخل این کتاب به ۲۳ تا از پرکاربردترین و مهم ترین الگوهای طراحی اشاره شده و راجب هر کدوم از اون ها به طور مفصل توضیح داده شده. این کتاب رو به دلیل طولانی شدن عناوین نویسنده هاش به اسم کتاب گروه چهار نفره یا به عبارتی “the book by the gang of four” که بعدا به صورت مختصرتر با عنوان “the GoF book” میشناسن.
چرا الگوی طراحی رو باید یاد بگیریم؟
حقیقت اینه که شما ممکنه سال ها به عنوان یک برنامه نویس مشغول به کار باشی اما حتی یه الگو طراحی رو هم نشناسی، البته اکثر مردم همینن... حتی ممکنه بدون این که خودت متوجه باشی یه سری از الگوها رو پیاده سازی کرده باشی پس چه ضرری داره که بخای این الگوها رو یاد بگیری؟؟ :دی
۱- الگوهای طراحی یه سری از راه حل های مطمئن و تست شده برای مشکلات توسعه نرم افزاری هستن حتی اگر به هیچ مشکلی برنخوردید چه عیبی داره که این الگوها رو بلد باشید و از این طریق می تونید برای هر گونه مشکلی طراحی نرم افزار یک راه حل مناسب پیدا کنید.
۲- الگوهای طراحی یه زبان مشترک دارن که می تونید با هم تیمی هاتون با اون ارتباط برقرار کنید مثلا شما می گید برای اون از Singleton استفاده کن و همه افراد تیم هدف شما رو از گفتن این کلمه میفهمن به همین راحتی:)
طبقه بندی الگوها
به طول کلی الگوها بر اساس هدف و کاربردی که دارند به ۳ دسته کلی تقسیم می شن:
1- Creational patterns
2- Structural patterns
3- Behavioral patterns
الگوهای Creational بیشتر حول افزایش انعطاف پذیری و استفاده مجدد از کدهاتون داخل پروژه هاتون تمرکز کرده.
الگوهای Structural به چگونه سر هم اوردن اشیاها و کلاس ها داخل ساختارهای بزرگتر بدون تاثیر روی انعطاف پذیری و کارایی اونا تمرکز کرده.
الگوهای Behavioral بیشتر حول ارتباط موثر و مسئولیت بین اشیا می پردازه.
برای مشاهده بخش های دیگه از لینک های زیر استفاده کنید: