الگوی طراحی Factory در جاوا

به مطلب آموزشی الگوی طراحی Factory در جاوا خوش آمدید. الگوی طراحی Factory یکی از الگوهای دسته Creational Design pattern است و به طور عمده ای در JDK و همچنین فریمورک هایی مانند Spring و Struts استفاده شده است.

الگوی طراحی Factory چیست؟

ما قبلاً الگوی طراحی Proxy را بررسی کرده ایم که آن از دسته الگوهای Structural بود و اما الگوی Factory از دسته الگوهای Creational است. اما چگونه این الگو به تولید در مبحث شئ گرایی ربط پیدا می کند؟

الگوی طراحی Factory زمانی استفاده می شود که ما یک کلاس والد دارید که با ارث بری از آن تعدادی زیرکلاس ایجاد کرده ایم، و بر اساس ورودی می خواهیم یکی از شئ متناسب با یکی از زیرکلاس ها را تولید کنیم و برگردانیم.

در واقع این الگو مسئول نمونه سازی از یک کلاس است که نوع آن کلاس را برنامه مشتری و ورودی آن مشخص می کند.

بیایید ابتدا نحوه پیاده سازی الگوی Factory در جاوا را ببینیم و یاد بگیریم و بعد در مورد مزایای الگوی طراحی Factory صحبت کنیم.

 

پیاده سازی الگوی طراحی Factory

کلاس های متفاوتی برای پیاده سازی مثال نیاز داریم که به ترتیب می سازیم. اول از همه به سراغ کلاس اصلی که کلاس والد است می رویم.

الگوی طراحی Factory – کلاس والد

کلاس والد یا Parent class یا  Super class ، می تواند هر نوع کلاسی باشد، چه interface چه abstract class و چه یک کلاس عادی جاوا.

برای مثالی که ما در اینجا ارائه می دهیم، یک کلاس والد abstract که تابع toString() آن اصطلاحاً Override شده است، تعریف شده است.

 

الگوی طراحی Factory – زیرکلاس های ارث بری شده

بیایید فرض کنیم ما دو زیرکلاس PC و Server را هم داریم از کلاس والد Computer ارث برده اند.

کلاس PC :

 

و کلاس Server :

 

الگوی طراحی Factory – کلاس Factory

حالا که کلاس والد و زیرکلاس های ما تعریف و آماده شده اند، می توانیم کلاس Factory را هم بنویسیم. یک پیاده سازی ساده به شکل زیر است:

دو نکته مهم درباره کلاس الگوی طراحی Factory را باید بدانید:

  1. می توانیم کلاس Factory را به صورت Singleton تعریف کنیم؛ و یا متدی که شئ زیرکلاس را بر می گرداند static باشد.
  2. بر اساس ورودی اشیا متفاوتی می تواند ساخته و برگردانده شود. به همین دلیل نوع مقدار خروجی از کلاس والد یا همان Computer تعریف شده است. متد getComputer در واقع همان متد تولید کننده factory است.

 

الگوی طراحی Factory – برنامه کاربردی برای تست

این یک برنامه ساده است که به عنوان برنامه سمت مشتری از الگوی طراحی شده در بالا استفاده می کند.

 

خروجی برنامه بالا هم به شکل زیر است:

 

جمع بندی

نمونه های الگوی طراحی Factory در JDK

  1. متد getInstance در java.util.Calendar, ResourceBundle و NumberFormat از الگوی Factory استفاده می کنند.
  2. متد valueOf در کلاس های پوششی مانند Boolean و Integer و … .

 

مزایای الگوی طراحی Factory

  1. این الگوی طراحی می توان روشی ارائه می دهد تا به سادگی برای همه چیز interface طراحی کنید و محدود به پیاده سازی همه چیز از ابتدا نیستید.
  2. این الگوی طراحی با حذف نمونه سازی مستقیم از کلاس های اصلی، واسطی ارائه می دهد تا نمونه سازی از طریق آن انجام شود. به این شکل، کد ما پیچیدگی کمتری دارد و کدها در مقابل خطاهای پیاده سازی مقاومت و استحکام بیشتری دارند.
  3. الگوی Factory انتزاع خوبی را بین پیاده سازی کلاس های اصلی و کلاس برنامه کاربردی یا همان برنامه مشتری ارائه می دهد. به این ترتیب بدون نیاز به تغییر کلاس های برنامه مشتری، می توان تعریف کلاس های PC و Server را تغییر داد.

 

 

منبع انتشار این آموزش، مطلبی با عنوان Factory Design Pattern in Java بوده است.

نظرتان را برای ما بنویسید

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