اولین سوالی که احتمال ذهنمونو درگیر کرده اینه که ...
دیزاین پترن ها راه حلی برای مشکلات کلی هستند که توسعه دهندگان در طول توسعه نرم افزار با انها مواجه بودند. این راه حل ها با ازمون و خطا توسط توسعه دهندگان متعددی تو یک دوره زمانی قابل توجه ای بدست آمد.
دیزاین پترن یه تیکه کد خاصی نیست، بلکه مفهوم کلی برای حل یک مشکل خاص است، ما میتونیم جزئیات دیزاین پترن رو پیاده سازی کنیم یا راه حلی متناسب با برنامه خودمون پیاده سازی کنیم.
دیزاین پترن ها معمولا با الگوریتم ها اشتباه گرفته میشن. چون هر دو مفهوم راه حل های معمولی برای برخی مشکلات شناخته را توصیف میکنن.در حالی که یک الگوریتم همیشه مجموعهای واضح از اقدامات را تعریف میکند که میتواند به هدفی دست یابد، یک دیزاین پترن توصیف سطح بالایی از یک راهحل است. کد یک دیزاین پترن اعمال شده برای دو برنامه مختلف ممکن است متفاوت باشد.
بزارید با یه مثال بگم.
الگوریتم مثل دستور پخته: هر دو دارای مراحل روشنی برای رسیدن به یک هدف هستند. از طرف دیگه دیزاین پترن شبیه یک طرح اولیه است: شما می توانید ببینید که نتیجه و ویژگی های آن چیست، اما ترتیب دقیق اجرای آن به شما بستگی دارد.
بیشتر دیزاین پترن ها خیلی رسمی توصیف شدن. بنابراین میتونید اونها رو در بسیاری از موارد بازنویسی کنید. دیزاین پترن ها فقط یه الگو برای حل مشکلات ههستند که میتونید دو یا چند الگورو با هم ادغام کنید تا مشکل خودتون رو حل کنید.
بایدی در کار نیست میتونید چند سال برنامه نویس باشید حتی یک دیزاین پترن رو بلد نباشید. خیلیا حتی از یه سری دیزاین پترن ها استفاده میکنند که حتی اسمشو نمیدونن ولی پس چرا باید واسه یادگیری اونا وقت صرف کنیم؟
اینو یادت باشه: میتونی یه دایره بدون استفاده از پرگار بکشی ، برنامه نویسی ام دقیقا همینه میتونی بدون بلد بودن دیزاین پترن ها برنامه نویس بشی ولی میتونی با دیزاین پترن ها یه برنامه نویس اصولی بشی و به کمتر مشکلی بخوری.
ما 23 تا دیزاین پترن داریم به نام های:
مرجع: کتاب Dive Into Design Pattern