الگوی طراحی Factory Method یکی از الگوهای دسته ایجادی است. مفهوم الگوی كارخانه، دقیقا از معنی لغوی آن مشخص است. كارخانه مكانی است كه در آن كالاها و محصولاتی تولید میشود و در بحث الگوهای طراحی، یك Factory كلاسی است كه نمونههایی از كلاسهای دیگر را با توجه به پارامترهایی كه برای آن ارسال میشود، ایجاد میكند.
منظور از الگوی طراحی Factory Method چیست؟
بگذارید با یک مثال بررسی کنیم. یک فروشگاه پوشاک را در نظر بگیرید. هر زمان كه فروشگاه به لباس خاصی نیاز داشته باشد، اسامی را به تولیدكننده ارسال میكند و تولیدكننده با توجه به اسامی ارسال شده، آن لباسها را تولید كرده و به فروشگاه میفرستد. در این مثال تولیدكننده همان كلاس Factory است كه با توجه به پارامترهای ارسال شده (لیست پوشاك مورد نظر فروشگاه) لباس مورد نظر (شی مورد نظر) را تولید و برای مشتری ارسال میكند.
مزیت الگوی Factory Method
بنابر گفته GoF هدف از الگوی Factory Method عبارت است از :
«یک رابط کاربری برای ساخت اشیا تعریف میکند و در عین حال اجازه میدهد تا زیر کلاسها در مورد اینکه چه شی را نمونهسازی کنند تصمیم بگیرند. در واقع این الگو اجازه میدهد تا نمونهسازی را به زیرکلاسها محول شود.»
این الگو پیچیدگی ایجاد اشیا را برای کاربر پنهان میکند. با استفاده از این الگو میتوانیم بدون اینکه کلاس دقیق یک شی را مشخص کنیم آن را ایجاد و از آن استفاده کنیم. کاربر معمولا شی واقعی را ایجاد نمیکند، بلکه با یک واسط یا کلاس انتزاعی در ارتباط است و کل مسئولیت ایجاد کلاس واقعی را به Factory Method میسپارد.
بنابراین در طراحی نرمافزار با استفاده از این الگو میتوانیم نمونهسازی از کلاسها را بدون دانستن جزئیات پیادهسازی آنها انجام دهیم. همچنین الگوی Factory این امکان را فراهم میکند که محصول جدیدی را به راحتی و بدون نیاز به تغییر کد، به محصولات خود اضافه کنیم.
ویژگیها و اجزای الگوی Factory
Class Diagram
در شکل ۱ کلاس دیاگرام مربوط به این الگو نمایش داده شده و در زیر آن شرکتکنندگان در آن و نقش هر یک بیان شده است.
شکل ۱ : کلاس دیاگرام الگوی Factory Method
نقش کلاسها
- Product:
یک واسط از اشیایی که Factory method ایجاد میکند، تعریف مینماید.
- ConcreteProduct :
پیادهسازی Interface Product.
- Creator:
تعریف Factory Method که یک شی از نوع Product را برمیگرداند و ممکن است به صورت پیش فرض، طوری پیادهسازی شده باشد که یک ConcreteProduct را برگرداند. همچنین ممکن است FactoryMethod را برای ایجاد شی از نوع Product صدا بزند.
- ConcreteCreator :
Override کردن factory method برای برگرداندن یک نمونه از ConcreteProduct.
سایر ویژگیهای کلیدی الگوی طراحی Factory
در جدول ۱ بهصورت خلاصه هدف الگو، نام یا نامهای دیگری که الگو با آن شناخته میشود، مواقعی که میتوان از این الگو استفاده کرد، مزایا و معایب استفاده از این الگو و الگوهای مرتبط به این الگو توضیح داده شده است.
جدول ۱: ویژگیهای Factory Method
عنوان | شرح |
نام | Factory Method Pattern |
هدف | ارائه یک واسط برای ساخت اشیا، همچنین اجازه میدهد تا زیر کلاسها در مورد اینکه چه شیای را نمونهسازی کنند تصمیم بگیرند. |
نامهای دیگر | این الگو با نام Virtual Constructor هم شناخته میشوند. |
کاربرد | زمانی از الگوی Factory استفاده کنید که :
|
نتایج | مزایای این الگو :
معایب این الگو :
|
الگوهای مرتبط |
|
جمعبندی
با توجه به این که همیشه امکان گسترش نرمافزارها در آینده وجود دارد استفاده از الگوی Factory Method میتواند بسیار مفید و کاربردی باشد و ایجاد تغییرات را آسانتر کند. با توجه به انعطافپذیر بودن این الگو بهینهسازی راحتتر شده و در هزینهها پیش رو نیز صرفهجویی خواهد شد. آیا شما هم تجربه استفاده از الگوی Factory Method را در طراحی نرمافزار داشتهاید؟ خوشحال میشویم که تجربه خود را با ما به اشتراک بگذارید.
دیدگاهتان را بنویسید