این الگو برای ایجاد کلاس‌های مشابه هم استفاده می‌شود تا وابستگی بین استفاده کننده (Client) و تأمین کننده کمتر شود. در‌واقع یک کلاس وظیفه ایجاد کلاس‌های دیگر را به عهده میگیرد. البته الزاماً این الگو شامل تنها یک کلاس سازنده نیست بلکه هر کلاس سازنده وظیفه ایجاد کلاس‌های مشابه هم را دارد و ممکن است در یک پروژه خاص چندین کلاس سازنده مختلف داشته باشیم. فرض کنید میخواهید با پایگاه داده ارتباط برقرار کنید. با در نظر گرفتن اینکه در حال استفاده از چند پایگاه داده مختلف هستیم، برای اینکه اتصال با هر پایگاه داده‌ برقرار شود بایستی از کلاس همان پایگاه داده استفاده کرد و یکی از متد های آنرا فراخوانی کرد تا ارتباط برقرار گردد. زمانی که از این الگو استفاده میکنید، شما مستقیماً با کلاس‌های پایگاه داده سر و کار ندارید، بلکه یک کلاس به عنوان Factory واسط بین شما و کلاس‌های پایگاه داده است. حال اگر بخواهید به پایگاه داده متصل شوید، درخواست خود را به Factory ارسال میکنید تا کلاس پایگاه داده مورد نظر را برای شما ایجاد نماید. بنابراین وابستگی به کلاس‌های پایگاه داده کمتر شده و مدیریت ساختن این کلاس‌ها در Factory مجتمع می شود. در حالت عادی ایجاد کلاس‌ها در بخش‌های مختلف و در کلاس‌های مختلف ممکن است انجام شود و مدیریت و تغییر نحوه ایجاد کلاس‌ها در آینده با مشکل مواجه می شود. این الگو برای حل این مشکلات به وجود آمده است و شامل مجموعه‌ای از Factory های به هم مرتبط می باشد.
به عنوان مثالی دیگر، شکل زیر را در نظر بگیرید :

abstract-factory-pattern

در تصویر بالا فرض کنید Client قصد دارد به پایگاه داده سرور شماره ۲ متصل شود. در این صورت با استفاده از سازنده ServerTwoFactory که از DBAbstractFactory ارث بری میکند و فراخوانی متدهای آن، کلاس‌های ServerTwoMySQL و ServerTwoSQL ایجاد شده و قابل استفاده خواهد بود. البته Client تنها متدهای مربوط به اینترفیس ها و DBAbstractFactory را می‌شناسد و نیازی به دانستن اطلاعات در باره متد های کلاس‌های دیگر ندارد. چرا که اینترفیس ها و DBAbstractFactory به عنوان راهنما در اختیار Client قرار دارند.

محمد باقر رستمی

برنامه نویسی رو دوست دارم و از کارم و بیشتر از اون از یادگرفتن لذت می برم. دوست دارم از این طریق برای مردم دنیا مفید باشم. فارغ از رنگ، نژاد، ملیت و جنسیت.

Latest posts by محمد باقر رستمی (see all)

facebooktwittergoogle_pluslinkedin

2 نظر در رابطه با “Abstract Factory Pattern

دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

*