7. الگو های طراحی نرم افزار


    یک تعریف عمومی برای الگوها وجود ندارد، اما شاید بهترین چیز برای شروع یکی از جمله‌‌هایی Christopher Alexander که یک الهام‌‌بخش برای علاقه‌‌مندان به الگوها می‌‌باشد، مناسب به نظر می‌‌آید. "هر الگویی یک مشکل را تعریف می‌‌کند که به طور مرتب در محیط ما رخ می‌‌دهد و سپس هسته راه‌‌حل را رائه می‌‌دهد. بطوری که راه‌‌حل را شما میلیون‌‌ها بار می‌‌توانید استفاده کنید بدون اینکه یک راه دو بار رفته باشید"  [Alexander et al.]. الکساندر یک معمار است بنابراین او درباره ساختمان‌‌ها صحبت می‌‌کرده است.اما این تعریف بطور دقیقی برای نرم‌‌افزار قابل کاربرد است. تمرکز یک الگو بر روی یک راه‌‌حل ویژه است، راه‌‌حلی که بسیار معمول و در عین حال موثر در مواجه با یک یا تعداد بیشتری از مشکلات تکرار شونده باشد. راه دیگری برای در نظر گرفتن یک الگو این است که آن‌‌ها را یک توده بزرگ بدون شکل از پندها یا مشاوره‌‌ها در نظر بگیریم و هنر ایجاد الگو این است که یک مشاوره یا پند را به قسمت‌‌های نسبتا مستقل که آن‌‌ها را می‌‌توانیم به  هم ارتباط بدهیم و آن‌‌ها را بیشتر یا کمتر بصورت جداگانه مورد نقد قرار دهیم تقسیم کنیم.
    یک مورد مهم  درباره الگوها این است که آنها در رفتار و اعمال ما ریشه کرده‌‌اند. شما می‌‌توانید الگوها را بوسیله نگاه‌‌کردن به مردم و کارهایی که انجام می‌‌دهند ببینید. این یک پروسه آسان نیست، اما یکبار که شما الگوهای خوبی پیدا کنید به یک چیز ارزشمند برای شما تبدیل می‌‌شود. برای من این ارزش به این معنی می‌‌باشد که این توانایی را داشته باشم که کتابی را بنویسم که به عنوان یک رفرنس استفاده شود. شما نیازی نیست که تمام این کتاب را بخوانید یا همه کتاب‌‌های الگو را بخوانید تا مفید باشد. کافی هست تا حدی بخوانید که الگوها را درک کنید.، چه مشکلاتی را حل می‌‌کنند و چگونه این مشکلات را حل می‌‌کنند. نیازی به این نیست که تمام جزئیات را بدانید در همین حد کافی است که وقتی با مشکلی مواجه شدید بتوانید الگو را در کتاب پیدا کنید. فقط در این لحظه هست که شما واقعا الگوها را درک کرده‌‌اید.

 


هنگامی که شما به یک الگو نیاز دارید، باید به این فکر کنید که چگونه الگو را به شرایط خود تطبیق دهید. یک نکته کلیدی درباره الگوها این است که شما هرگز نمی‌‌توانید آن‌‌ها را به راه‌‌حل به صورت کورکورانه اعمال کنید که این نشان می‌‌دهد چرا ابزارهای مربوط به الگوها این گونه شکست‌‌های مفتضحانه‌‌ای هستند. من دوست دارم این مثال را بزنم که الگوها همانند یک کیک نیم‌‌پز هستند. به این معنا که شما باید آن‌‌ها را در اجاق پروژه خود به طور کامل بپزید. هربار که من در حال استفاده از یک الگو هستم به طور مرتب تغییرات کوچکی در آن بوجود می‌‌آورم. به دفعات زیاد راه‌‌حل‌‌های مشابهی مشاهده‌‌ می‌‌کنید، اما هیچ وقت دقیقا یکسان نیستند.
    هرالگویی نسبتا مستقل است، اما کاملا ایزوله شده نیست از یکدیگر نیستند. به طور معمول یک الگو باعث ایجاد الگوی دیگر می‌‌شود، یا تنها در حالتی رخ می‌‌دهد که یکی دیگر هم در اطراف باشد. بدین گونه شما یک کلاس جدول وراثت خواهید دید، اگر مدل دامنه‌‌ای در طراحی شما باشد. مرزها بین الگوها بطور طبیعی بصورت فازی است، اما من تمام تلاش خود را تا آن‌‌جا که توانسته‌‌ام کرده‌‌ام تا هرکدام از آن‌‌ها را بصورت مجزا در آورم. اگر کسی گفت "Use  a unit of work (184)"، شما می‌‌توانید آن را پیدا کنید و مشاهده کنید چگونه آن را اعمال کنید بدون اینکه کتاب را کامل بخوانید.
    اگر شما یک طراح نرم‌‌افزار با تجربه هستید، به احتمال زیاد بیشتر این الگوها برای شما آشنا به نظر خواهد رسید. الگوها ایده‌‌های اولیه و ابتدایی نیستند. بلکه مشاهده‌‌هایی از اتفاق‌‌هایی هستند که در محیط اتفاق می‌‌افتند. قانون این است که راه حل معمول را مورد بررسی قرار دهیم و به دنبال هسته آن بگردیم و در نهایت الگو را بیرون بکشیم. برای یک طراح پرتجربه ارزش یک الگو به ایده جدیدی که به شما می‌‌دهد نیست. بلکه ارزش آن کمکی است که به شما می‌‌کند تا ایده‌‌های خود را به هم ارتباط بدهید. اگر شما و همکارنتان همه می‌‌دانید که نمای خارجی چه چیزی هست، شما به مقدار زیادی می‌‌توانید با این جمله که می‌‌گوید "این کلاس یک نمای خارجی است" ارتباط برقرار کنید. همچنین به شما اجازه می‌‌دهد به یک شخص جدیدتر بگویید "از یک شئ انتقال داده برای این استفاده کن" . پس نتیجه این می‌‌شود الگوها یک واژه در رابطه با طراحی خلق کرده‌‌اند که این نشان دهنده این است که چرا نام‌‌گذاری یک مسئله بسیار مهم است.
 

 


نظرات

8. ساختار الگو های طراحی

ساختار الگو ها در طراحی سیستم های نرم افزاری و مسائل پیاده...

ادامه مطلب

6. کارایی نرم افزار های تجاری

تاملی درباره کارایی سیستم های نرم افزاری و تصمیماتی که بخاطر کارایی...

ادامه مطلب

5. انواع نرم افزار های تجاری

نرم افزارهای تجاری همگی متفاوت هستند و این مشکلات متفاوت نیازمند برخوردهای...

ادامه مطلب

7. الگو های طراحی نرم افزار

هر الگویی یک مشکل را تعریف می کند که به طور مرتب در محیط ما رخ می دهد و سپس هسته راه حل را رائه می دهد


مقالات بیشتر در زمینه طراحی سیستم

پیشنهادهای فروش را شخصی‌سازی کنید و یک تجربه بهتری از مشتریان...

نرم افزار مدیریت ارتباط با مشتریان (CRM)

امکانات درخواست دمو

فرایند تولید خود را از ورود مواد اولیه تا خروج محصول...

نرم افزار انبارداری و مدیریت تولید (PLM)

امکانات درخواست دمو