گروه نرم افزاری هیلتن

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

الگوی طراحی Factory



الگوی طراحی Factory
الگوی طراحی Factory یکی از الگوهای است که در زبان¬های مدرن و پیشرفته مثل C# و java زیاد استفاده می شود. ایده اصلی این الگوی طراحی، ایجاد رابطه مشترک برای ساختن اشیا از کلاس ها، برای جلوگیری از بی نظمی است. در نتیجه کلاینت ها می توانند بدونه داشتن آگاهی از جزئیات پیاده سازی از کلاس ها نمونه سازی کنند. بعلاوه بر این محصول جدید را بدونه نیاز به تغییر کد می توان به محصولات اضافه نمود. درواقعه زمانی که کلاینت نیاز به یک شی دارد بدونه نیاز به داشتن ارتباط مستقیم با آن کلاس می تواند از آن نمونه سازی کند. الگوی Factory بسیار ساده و قابل لمس و انعطاف پذیر می باشد. الگوی Factory بر گرفته از کلمه کارخانه می باشد که مانند یک کارخانه که چندین محصول دارد ولی یک دفتر فروش داشته باشد عمل می کند. برای مثال، یک برنامه را در نظر بگیرید که با انواع اشکال هندسی مانند دایره، لوزی، مربع و.... کارمی کند. ما می توانیم برای هر یک از این اشکال یک کلاس جدا گانه طراحی و به صورت مستقل با هر کلاس کار کنیم . اما یک روش خوب که وجود دارد استفاده از الگوی طراحی Factory برای نمونه ساختن از این اشیا است. اگر از الگوی طراحی Factory استفاده کنیم اضافه کردن اشیای جدید خیلی ساده تر می باشد.

هدف:
متمرکز نمودن نمونه سازی از کلاس های مشابه و کاهش بی نظمی و اتصال مستقیم

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

کاربرد:
1- ایجاد یک واسط مشترک برای یک یا چند کلاس هم شکل
2- انعطاف پزیری برنامه بالا می رود.
3- افزودن کلاس جدید به الگو ساده و سریع است.
4- کلاینت درگیر مشخصات نمونه سازی نمی شود.

ساختار:در زیر نمودار کلاس دیاگرام الگوی Factory نشان داده شده است.

نمودار کلاس دیاگرام الگوی Factory

اجزا:
Product : واسط کلی کلاس محصولات را مشخص می کند.
concreteProduct: کلاسی که واسط Product را پیاده سازی می کند.
ConcreateFactory: کلاسی که متد FactoryMethod را پیاده سازی می کند.
Factory: کلاسی که متد FactoryMethod را فراهم می کند.

الگو های مرتبط:
Abstract Factory: در بیشتر مواقع الگوی Factory را در داخل الگوی Abstract Factory پیاده سازی می کنند.

پیامدها:
این الگو یک تکنیک برای کنترل بی نظمی است.
ممکن است روند نمونه سازی از کلاس فقط شامل نمونه سازی ساده از کلاس نباشد.

نقاط قوت :
• کاهش وابستگی بین کلاس ها
• متمرکز سازی نمونه سازی از کلاس ها

نقاط ضعف:
• کلاینت مجبور است شی دریافتی را به نوع واقعی آن تبدیل کند.
• برای زمانی که کلاس های مشترک زیادی نداریم مجبوریم که Factory های زیادی بنویسیم.







گروه برنامه نویسی هیلتن

گروه برنامه نویسی هیلتن