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

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

الگوی طراحی Abstract Factory



الگوی طراحی Abstract Factory
الگوی طراحی Abstract Factory مانند الگوی طراحی Factory بر روی نحوه ساخت اشیا از کلاس ها نظارت دارد. این الگو برای مدیریت ساخت اشیا از کلاس ها، هنگامی که کاربر دقیق نمی داند که چه نوع شی می خواهد.

هدف:
تعریف یک کلاس کارخانه و تعدادی محصول به شکل انتزاعی، که بتوان خانواده ای از محصولات را تولید و در اختیار کلاینت ها قرار داد.

انگیزه:
: الگوی Factory Method زمانی مناسب است که تعدادی کلاس مشابه داشته باشیم. اما بعضی مواقع کلاس ها غیر مشابه هستند که می توان مثل Factory Method عمل نمود اما تعداد کار خانه ها زیاد می شود و مدیریت آن ها سخت می باشد. با استفاده از الگوی Abstract Factory با کمترین هزینه می توان مجموعه جدیدی از کلاس ها را اضافه کرد. برای مثال یک نمایشگاه فروش گوشی را در نظر بگیرید با دو نوع محصول هوشمند و ساده که دارای شرکت های سازنده مختلفی مانند Nokia Samsung ,HTC, و ...است و شما به عنوان یک خریدار به این نمایشگاه میروید و قصد خرید یک گوشی هوشمند از مارک HTC را دارید اما مدل آن را دقیق نمی دانید. شما از فروشنده در خواست گوشی هوشمند مارک HTC می کنید. رفتار فروشنده مانند رفتار الگوی Abstract Factory می باشد.

کاربرد
• کلاینت مستقل از نحوه ساخت اشیا برای محصولات است.
• اضافه کردن خانواده جدیدی از محصولات به راحتی انجام می شود.

ساختار

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

اجزا
Abstract Factory : واسطی که ساختار کلی کلاس ها را تعریف می کند.
ConcreteFactory : کلاسی که محصول یک خانواده تعریف شده است.
AbstractProduct : کلاسی که ساختار محصول های که قابل تولید توسط کارخانه است را تعریف می کند.
Product : محصولات واقعی قابل تولید توسط کارخانه می باشد.

الگوهای مرتبط
Factory method :در صورتی که کارخانه انتزاعی برای هر محصول، چندین انتخاب داشته باشد می توان از این الگو استفاده کرد.
Singleton : از آنجایی که در سر تا سر برنامه یک نمونه از کار خانه نیاز داریم می توان از الگوی Singleton استفاده کنیم.

پیامد
می توان برای متد های تولید محصول در واسط Abstract Method پارامتر تعریف نمود.

نقاط قوت:
به راحتی می توان محصول را از خانواده جدید اضافه نمود.

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







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

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