بعد از این که زبان های برنامه نویسی مختلفی رو مورد بررسی قرار دادیم حال به سراغ اصطلاحات و مباحث مربوط به برنامه نویسی آمده ایم. در این مقاله به سراغ دیزاین پترن (Design Pattern) رفته ایم و میخواهیم جواب سوال دیزاین پترن چیست؟ رو به صورت دقیق دهیم و در مورد انواع دیزاین پترن ها صحبتی داشته باشیم. پس اگر میخواهید در مورد دیزاین پترن (Design Pattern) بیشتر بدونید پیشنهاد میکنم این مقاله رو تا انتها مطالعه کنید.
دیزاین پترن چیست؟
شاید بارها اسم دیزاین پترن رو شنیده باشید اگر بخواهم به صورت خلاصه و مفید بگم دیزاین پترن چیست، باید بگویم بعضی وقت ها یک سری کارها تکراری و پر رخداد داریم که هر کسی برای انجام آنها یک راه حل ارائه میدهد. حال در طول زمان برای انجام این کارهای تکرای و پر رخداد یک سری راه حل استاندارد و قابل تکرار ارائه شده است که به آنها الگوهای طراحی میگویند.
نکته مهم: دیزاین پترن (Design Pattern) را می شود نوعی الگوی طراحی در برنامه نویسی تعریف کرد.
دیزاین پترن یک کلاس برنامه نویسی یا یک کتابخانه و یا حتی یک تابع در برنامه که ما به کدهایمان اضافه می کنیم نیست. اینو باید متذکر شوم که دیزان پترن نه کلاس برنامه نویسی است نه یک کتابخانه و حتی یک تابع در برنامه که ما به کدهایمان اضافه می کنیم نیست. دیزاین پترن یه قالب است که باید در شرایطی درست از آن استفاده کنیم و همچنین مستقل از زبان برنامه نویسی می باشد.
نکته1: یک دیزاین پترن خوب باید قابلیت پیاده سازی روی اکثر زبان های برنامه نویسی (نسبت به قابلیت های آن زبان) را داشته باشد.
توجه: میتوان دیزان پترن رو به یک چاقو تیز و برنده تشبیع کرد اگر به صورت درست و دقیق از آن استفاده کنیم می تواند فرشته نجات توسعه دهندگان و برنامه نویسان باشد و اگر اشتباه از آن استفاده شود میتواند کشنده باشد و باعث مشکلات عجیب و زیاد در برنامه نویسی شود، که همین امر باعث خرابی پروژه می شود. (نحوه استفاده از دیزاین پترن به شدت مهم است)
مثال برای دیزاین پترن (Design Pattern) :
فکر کنید میخواهیم 1000 تا 5 رو با هم جمع کنیم، جمع کردن 1000 تا 5 با هم زمان بر خواهد بود. پس بهتر از یک مفهوم به نام ضرب استفاده کنیم که در ظاهر قوانین متفاوتی هم دارد ولی در ذات خودش همون جمع هست. استفاده از ضرب برای جمع کردن عددهای یکسان یک الگوی طراحی حساب می شود. ضرب به خودی خود معنی نداره و قابل لمس نیست، بلکه ضرب دو یا چند عدد در هم معنی دارد. پس میتوان گفت دیزاین پترن به خودی خود معنی ندارد و صرفا فقط یک رویکرد است.
انواع دیزاین پترن ها
در بخش زیر انواع مختلفی از الگوهای طراحی رو مورد بررسی قرار میدهیم.
- الگوهای تکوینی (Creational Patterns)
- الگوهای ساختاری (structural patterns)
- الگوهای رفتاری (behavioral patterns)
- الگوهای همزمانی (Concurrency patterns)
الگوهای تکوینی (Creational Patterns)
این الگوها همونطوری که از اسمشون هم مشخصه راهحلهایی رو در ایجاد اقلام مختلف مثل متدها، نمونهها و… برای ما تعریف میکنند.
الگوهای ساختاری (structural patterns)
این دسته از پترنها این امکان رو به ما میدن که به شکل بهینهتری بین ساختارها، متدها، کلاسها و اساسا هر موجودیتی که در زبانمون داریم ارتباط برقرار کنیم.
الگوهای رفتاری (behavioral patterns)
الگوهای رفتاری هم به رفتار Entityهامون (موجودیتها شامل کلاس، متد، نمونه، اینترفیس و…) نسبت به مسائل مختلف میپردازند. مسئله میتواند تغییر یک entity دیگه باشد یا میتواند تغییر state داخل خود entity باشد.
الگوهای همزمانی (Concurrency patterns)
الگوهایی که به همزمانی رویدادها در خلال اجرای برنامه میپردازند. این الگوها از نظر من یک مرحله پیشرفتهتر از الگوهای قبلی هستند.
نتیجه گیری: اگر در انتها بخواهیم بیشتر در مورد الگوهای طراحی صحبت کنیم باید بگویم الگوهای طراحی در اصل برای حل کردن مشکلات برنامه نویسی است البته باید در مورد آن راه حل به خوبی فکر شده باشد. بعضی برنامه نویسه ها با مشکلی روبرو شدند و برای آن مشکل راه حل درست و دقیق رو پیدا کردند پس اگر ما در برنامه نویسی با آن مشکل روبرو شدیم دیگر نیاز نیست به دنبال راه حل بریم چون قبلا شخصی این راه حل رو پیدا کرده و ما باید از این راه حل استفاده کنیم.
دیدگاه کاربران
تعداد دیدگاه های کاربران : ۱ دیدگاهسلام و عرض ادب،
از مقاله خوبتون بسیار سپاسگذارم فوق العاده بود.
مخصوصا این بخش نتیجه گیری که کل مفهوم رو می رسونه 👍