این الگو همانند الگوی Abstract Factory میباشد با این تفاوت که هر کلاس Factory معمولاً تنها برای ایجاد یک کلاس خاص استفاده میشود. در برخی موارد کلاس Factory شامل یک متد استاتیک می‌باشد که وظیفه ایجاد کلاس مورد نظر بر اساس پارامتر ها را بر عهده دارد.

factory-method-pattern

 

در شکل بالا Client (که در‌واقع بخشی از کد است که به کلاسی مانند MySQLConnection نیاز دارد) میتواند با استفاده از کلاس‌هایی که از DBFactoryInterface ارث بری میکنند و فراخوانی متد createConnection کلاس مورد نظر خود را دریافت نماید. در‌واقع DBFactoryInterface یک استاندارد بین کلاس‌های Factory می باشد. با این حساب Client میتواند به صورت داینامیک یکی از کلاس‌های MySQLFactory و یا SQLFactory را ایجاد کرده و از متد createConnection که در هر دو کلاس وجود دارد استفاده نماید. در نهایت یکی از کلاس‌های Connection ایجاد شده و به Client بازگردانده می شود. در این ساختار Client تنها از متدهای موجود در کلاس DBFactoryInterface و DBInterface اطلاع دارد.
این الگو تا حدود زیادی شبیه الگوی Abstract Factory می‌باشد اما مهمترین نکته در زمان استفاده از آنهاست. برای کلاس‌هایی که تنها یک اشتراک مفهومی دارند (مانند MySQLConnection و SQLConnection که در مفهوم ‘ارتباط با پایگاه داده’ مشترک هستند) از الگوی Factory Method استفاده نمایید و زمانی که کلاس‌های مورد نظر در بیش از یک مورد اشتراک دارند میتوانید از Abstract Factory به همراه Factory Method استفاده نمایید. مانند مثالی که در بخش الگوی Abstract Factory زده شد، کلاس‌های نهایی علاوه بر اینکه در مفهوم ‘ارتباط با پایگاه داده’ اشتراک دارند، در موضوع ‘سرور’ نیز اشتراک دارند.(ServerOne و ServerTwo). هر چقدر تعداد عناوین اشتراک کلاس‌ها بیشتر باشد پیچیدگی ساختار بیشتری خواهید داشت.

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

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

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

facebooktwittergoogle_pluslinkedin

یک نظر در رابطه با “Factory Method Pattern

دیدگاه

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

*

*