5 دلیل برای یادگیری Design Pattern ها یا الگوهای طراحی

سیده آمین ارمان

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2016/05/10
ارسالی ها
1,730
امتیاز واکنش
20,744
امتیاز
795
محل سکونت
البرز
اگر با مفهوم Design Pattern (دیزاین پترن یا الگو طراحی) آشنایی داشته باشید، به طور حتم می دانید که دیزاین پترن ها به مجموعه یی از راه کارها در برنامه نویسی شیء گرایی گفته می شوند که می توانید از آن ها در کدنویسی پروژه ها -اعم از کوچک و بزرگ- استفاده نمایید. ایده ی این الگوها که توسط متخصصان با تجربه در زمینه شیء گرایی پیاده سازی شده اند، می توانند کمک کنند تا سورس کدتان انعطاف پذیرتر، تغییر پذیرتر و برای نگهداری آسان تر شوند. بنابراین اگر هنوز هم الگوهای طراحی را جزو چرخه توسعه تان به حساب نمی آورید، قصد داریم 5 دلیل بیاوریم که چرا باید آن ها را هم به جعبه ابزارتان اضافه کنید!

۱. عدم نیاز به اختراع دوباره چرخ!
یک اصل ثابت در توسعه نرم افزارها وجود دارد. اشتباه نکنید، منظورمان تاخیر در اتمام پروژه یا نیاز به بودجه بیشتر نیست! بلکه اعمال تغییرات در صورت نیاز است. تغییرات هنگامی رخ می دهند که نیازمندی ها عوض می شوند، سیستم ها رشد می کنند، ویژگی های جدید اضافه می شوند، کارایی بهبود می یابد و موارد دیگر. حال سوال اینجا است که چگونه می توان نرم افزاری تولید کرد به طوری که تاثیر این تغییرات در آن حداقل باشد؟ نیاز به توضیح نیست که یکی از سخت ترین جنبه های توسعه نرم افزاری چیزی نیست جز درک کدهای موجود (که احتمالا توسط افراد دیگری نوشته شده اند) و اصلاح این کدها به نحوی که نقص های جدید یا نتایج ناخواسته بروز نکند.

در پاسخ به سوال فوق بایستی گفت که در واقع، معجزه ای در کار نیست ولی تکنیک هایی وجود دارند که می توان از آن ها در برنامه نویسی شیء گرا استفاده کرد تا برای تغییرات هم مناسب باشند. تکنیک هایی که بر اثر تجربه افراد حرفه ای در شرایط سخت توسعه داده شده اند و برای استفاده ی عموم به بازار عرضه شده اند. این تکنیک ها به Design Patterns یا «الگوهای طراحی» موسوم هستند و طرح های پیش ساخته ای را فراهم می کنند که برای حل مشکلات رایج در برنامه نویسی می توان از آن ها استفاده نمود. این الگوها جزء لایبرری ها یا ماژول ها نیستند بلکه راهبردهایی هستند که می توانند در هسته ی طرح هایتان گنجانده شوند که باعث راحتی در ساخت سیستم های شیء گرا با قابلیت انعطاف و نگهداری بالا می شود. بنابراین وقتی می توان از تجربه بهترین طراحان شیء گرایی استفاده کرد، چرا باید اقدام به اختراع یک چرخ ناسالم کنیم؟

۲. مهارت های مربوط به شیء گرایی تان را بهبود دهید
همگی آموخته ایم که سنگ بنای برنامه نویسی شیء گرا چیزی نیست جز: Abstraction, Inheritance, Polymorphism, Encapsulation که به ترتبی می توان معادل های کپسوله سازی، چندریختی، وراثت و انتزاع را برای این اصطلاحات در نظر گرفت (البته شدیدا توصیه می کنیم که از یادگیری معادل های فارسی این اصطلاحات خودداری نمایید.) با این که این سخن درستی است اما طراحی سیستم های شیء گرا به همین جا ختم نمی شود. در حقیقت، استفاده عادی از این قواعد پایه ای می تواند سریعا باعث ایجاد مشکلاتی مثل تکرار کد، طراحی ضعیف و استفاده بیش از حد از کلاس ها شود.

به طور کلی، در مجموعه ی الگوهای طراحی با گروهی از قواعد دیگر آشنا خواهید شد که بهتر از پایه های اولیه شیء گرایی به کار خواهند آمد. این اصول طراحی می توانند به هنگام ساخت کلاس ها و اشیاء طراحی تان به کار بـرده شوند و به شکل راهبردهایی مانند موارد مقابل استفاده شوند: «هرچیز قابل تغییر را کپسوله سازی کن» یا «کلاس ها باید برای توسعه دادن بسته اما برای اصلاح کردن باز باشند» با شناخت این اصول و چگونگی ترکیب آن ها در الگوهای طراحی، به طراح و معمار بهتری در زمینه شیء گرایی بدل خواهید شد.

۳. الگوها را در لایبرری ها و زبان های مختلف تشخیص دهید
دیزاین پترن ها راه حل های عمومی برای حل مشکلات رایج در طراحی شیء گرا هستند به این معنا که راه حل هایی هستند برای مشکلات طراحی شما. در واقع شما نمی توانید یک نمونه الگوی طراحی را برای افزودن به طرح تان دانلود و نصب نمایید بلکه باید الگوی طراحی را در داخل سیستم تان پیاده سازی کنید. برنامه نویسان غالبا با الگوهایی در لایبرری ها، پکیج ها و ماژول هایی که استفاده می کنند مواجه می شوند که از آن جمله می توان به پکیج ورودی/خروجی (I/O) فایل در جاوا اشاره کرد.

زبان برنامه نویسی جاوا از الگوی Decorator استفاده می کند، که اجازه می دهد تا یک شیء ورودی/خروجی از فایل اصلی گرفته و سپس آن را با امکانات جدیدی طبق نیاز خود ترکیب کنید. این روش بسیار خوبی برای طراحی یک سیستم ورودی/خروجی فایل است. و اگر از قبل با الگوهای طراحی آشنا باشید (و به طور خاص الگوی decorator) به سادگی متوجه چگونگی طراحی این شیء و روش کار آن خواهید شد. در یک کلام، به کار بردن این دیزاین پترن باعث می شود سریع تر طراحی سیستم را درک کنید.

بنابراین خواه از File Object جاوا (Decorator Pattern) استفاده کنید یا از Event Objects جاوا اسکریپت (Observer Pattern) یا NSUserDefaults Object از شرکت Cocoa موسوم به Singleton یا الگوی Model-View-Controller، متوجه می شوید که اگر از قبل با الگوهای بیشتری آشنا باشید، لایبرری های جدید را هم سریع تر درک خواهید کرد.

۴. از فهرست لغات مشترک استفاده کنید
همان طور که در مورد شماره 3 بیان شد، یکی از مزایای یادگیری دیزاین پترن ها آشنایی با الگوهای عمومی و همگانی است. اگر همراه با گروه تان قصد سرعت بخشیدن به کارتان را دارید، از طریق این الگوها، نیروی جدیدی برای برقراری ارتباط درباره ی منظور خود در طرح هایتان با هم تیمی هایتان بدست می آورید. به عنوان مثال، فرض کنید هم گروهی تان می خواهد قسمت جدیدی از طراحیش را برایتان شرح دهد. دو طرز بیان زیر برای این منظور امکان پذیر است:

من این کلاس برودکست رر ساختم. کار آن پیدا کردن تمامی اشیائی هست که به آن گوش می دهند و هر وقت دیتای جدیدی برسه، آن پیام را به تمامی گیرنده ها می فرسته. جالب اینجا هست که گیرنده ها می تونن در هر زمانی به برودکست متصل شده یا خودشون رو حذف کنن؛ این روش کاملا پویا و به اصطلاح Loosely Coupled هستش.

یا

من این کلاس برودکست را بر پایه ی الگوی Observer ساختم.

در روش اول، باید مدت زیادی فکر کنید تا دقیقا متوجه شوید که «کلاس برودکست» چه کاری انجام می دهد. در روش دوم، طرز کار کلاس را از قبل می دانید. این قدرت به کارگیری فهرست لغات مشترک برای الگوها است. اگر به زبان الگوها ارتباط برقرار کنید، توسعه دهندگان دیگر فورا و با جزئیات بیشتر متوجه طرحی که قصد بیان آن را دارید خواهند شد.

۵. حقیقت و زیبایی را بیابید
با این که در ترکیب و ساخت سیستم های شیء گرا به دست خودتان چیزهای زیادی برای یادگیری وجود دارد، می توانید از مزایای شناخت و بینشی که از طریق مطالعه و استفاده از دیزاین پترن ها بدست می آید، استفاده نمایید. همان طور که بیان کردیم، الگوهای طراحی به یکباره اختراع نشده و آموخته نمی شوند; بلکه در نتیجه کار سخت و تجربه عمیق از طریق ساخت تعداد زیادی سیستم مختلف بدست می آیند. در حین فرایند یادگیری الگوهای طراحی، شاید به دیدگاه یک معمار باتجربه نرم افزاری دست یابید -کاری را درخشان و شگفت آور و گاهی اوقات غیر بصری خواهید یافت- و در عین حال به سمت ساخت نرم افزارهای بهتر و ماندگارتر پیش خواهید رفت.

یادگیری الگوهای طراحی را از امروز شروع کنید
یک دهه قبل کتابی نوشته شد که همه ی نیازهای درک اصول و الگوهای طراحی شیء گرا را آموزش می دهد؛ این کتاب که نام آن Head First Design Patterns است، برنده جایزه Jolt شده و یکی از کتاب های پرفروش انتشارات O’Reilly نیز هست و بسیاری افراد را در یادگیری این الگوها راهنمایی کرده است. علاوه بر این کتاب دیگری نیز تحت عنوان Design Patterns موسوم به Gang of Four یا به اختصار GoF وجود دارد که کمتر برنامه نویس حرفه یی را می توان یافت که این کتاب را نخوانده باشد.
 

برخی موضوعات مشابه

بالا