
اولین سوالی که احتمال ذهنمونو درگیر کرده اینه که ...
دیزاین پترن ها راه حلی برای مشکلات کلی هستند که توسعه دهندگان در طول توسعه نرم افزار با انها مواجه بودند. این راه حل ها با ازمون و خطا توسط توسعه دهندگان متعددی تو یک دوره زمانی قابل توجه ای بدست آمد.
دیزاین پترن یه تیکه کد خاصی نیست، بلکه مفهوم کلی برای حل یک مشکل خاص است، ما میتونیم جزئیات دیزاین پترن رو پیاده سازی کنیم یا راه حلی متناسب با برنامه خودمون پیاده سازی کنیم.
دیزاین پترن ها معمولا با الگوریتم ها اشتباه گرفته میشن. چون هر دو مفهوم راه حل های معمولی برای برخی مشکلات شناخته را توصیف میکنن.در حالی که یک الگوریتم همیشه مجموعهای واضح از اقدامات را تعریف میکند که میتواند به هدفی دست یابد، یک دیزاین پترن توصیف سطح بالایی از یک راهحل است. کد یک دیزاین پترن اعمال شده برای دو برنامه مختلف ممکن است متفاوت باشد.
بزارید با یه مثال بگم.
الگوریتم مثل دستور پخته: هر دو دارای مراحل روشنی برای رسیدن به یک هدف هستند. از طرف دیگه دیزاین پترن شبیه یک طرح اولیه است: شما می توانید ببینید که نتیجه و ویژگی های آن چیست، اما ترتیب دقیق اجرای آن به شما بستگی دارد.
بیشتر دیزاین پترن ها خیلی رسمی توصیف شدن. بنابراین میتونید اونها رو در بسیاری از موارد بازنویسی کنید. دیزاین پترن ها فقط یه الگو برای حل مشکلات ههستند که میتونید دو یا چند الگورو با هم ادغام کنید تا مشکل خودتون رو حل کنید.
بایدی در کار نیست میتونید چند سال برنامه نویس باشید حتی یک دیزاین پترن رو بلد نباشید. خیلیا حتی از یه سری دیزاین پترن ها استفاده میکنند که حتی اسمشو نمیدونن ولی پس چرا باید واسه یادگیری اونا وقت صرف کنیم؟
دیزاین پترن ها یه زبان مشترک رو تعریف میکنند که شما و هم تیمی هایتان می توانید از ان برای برقراری ارتباط موثر تر استفاده کنید. میتوانید بگید: «اوه، فقط از یک Singleton برای آن استفاده کن» و همه ایده پشت پیشنهاد شما را درک خواهند کرد. اگر دیزاین پترن و نام آن را بدانید نیازی به توضیح نیست که singleton چیست.
دیزاین پترن ها مجموعه ابزاری از راه حل های آزموده شده برای مشکلات رایج در برنامه نویسی هستند. حتی اگر هرگز با این مشکلات روبرو نشوید، دانستن دیزاین پترن ها همچنان مفید است زیرا به شما می آموزد که چگونه با استفاده از اصول طراحی شی گرا، انواع مشکلات را حل کنید
اینو یادت باشه: میتونی یه دایره بدون استفاده از پرگار بکشی ، برنامه نویسی ام دقیقا همینه میتونی بدون بلد بودن دیزاین پترن ها برنامه نویس بشی ولی میتونی با دیزاین پترن ها یه برنامه نویس اصولی بشی و به کمتر مشکلی بخوری.
ما 23 تا دیزاین پترن داریم به نام های:
Factory Method
Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
Chain of Responsibility
Command
Interpreter
مرجع: کتاب Dive Into Design Pattern