18b19b52-38dc-41aa-bd48-eaa0772ac51f_designpattern

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

الگوهای طراحی نرم افزار،یکی از مسائل کاربردی در فاز طراحی نرم افزار است که به هر توسعه دهنده پروژه های نرم افزاری کمک خواهد کرد تا بر اساس تجارب توسعه دهندگان خبره،تصمیمات بهتر و کامل تری را بگیرد.

در این مقاله سعی می شود، مفهوم الگوهای طراحی به طور واضح بیان شود و در مقالات بعدی به کاربردهای آنها می پردازیم.

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

designPattern

فرض کنید،شکل A،دیاگرام طراحی در فاز طراحی نرم افزار باشد و کلاس های ۱ تا ۵ طبق فلش ها به هم وابسته باشند.در پروژه های زیادی،این مساله ممکن است پیش بیاید که چند کلاس داشته باشیم و این کلاس ها در اجرای خود وابسته به یکدیگر باشند.پس این یک مسئله تکراری است.

اگر کلاس های خود را طبق شکل A،تعریف کنیم ممکن است مشکلاتی بوجود بیایدکه در زیر به چند نمونه از آن ها اشاره می کنم:

۱-در صورت تغییر هر کلاس(به طور مثال کلاس شماره ۲)،تمام کلاس های وابسته به آن نیز ممکن است تغییر کنند

۲-اگر کلاسی اضافه شود،باید در تمام کلاس هایی که از آن،استفاده می کنند،یک به یک تعریف شود

۳-اگر کلاسی حذف شود(به طور مثال کلاس ۲)،باید در کلاس های وابسته به آن،باید یک به یک تغییرات اعمال شود

در واقع مدیریت ارتباطات کلاس ها در هر کلاس،بصورت جداگانه قرار دارد.

حال برای این مسئله تکراری در فاز طراحی نرم افزار،افراد خبره،پیشنهاداتی دارند که اگر آنها را در طراحی خود لحاظ کنیم به مشکلات ذکر شده برنخواهیم خورد.

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

به طور مثال ،برای مسئله تکراری نمونه ای که در بالا ذکر شد،الگوی طراحی به نام mediator پیشنهاد شده است که طبق این الگو باید کلاس ها را مشابه شکل B،در کنار هم چیند.با این روش،یک کلاس واسط گرفته شده است که کلاس های دیگر به جای اینکه هر کدام به طور مستقیم با هم در ارتباط باشند،تنها با کلاس مرکزی (کلاس ۶) در ارتباطند و اگر کلاسی تغییر کند یا حذف و یا اضافه گردد،تنها باید در کلاس مرکزی تغییرات اعمال شود و در واقع مدیریت تغییرات در کلاس مرکزی صورت می گیرد.

در ادامه چند مزیت استفاده از الگوهای طراحی ذکر شده است.

  • کاهش احتمال خطا
  • سازگاری بین طراحی و پیاده سازی
  • مزایای استفاده از طراحی شی گرا
  • افزایش انعطاف پذیری نرم افزار
  • افزایش قابلیت استفاده مجدد
  • افزایش کیفیت نرم افزار

در مقالات بعدی به کاربردها و مسائل مطرح در این زمینه خواهیم پرداخت.

 

دیدگاه کاربران