{CodeGate}

Factory پترن در جاوا (دیزاین پترن در جاوا)

در این قسمت تیم کدگیت را با آموزش Factory پترن در جاوا همراهی کنید. پیش نیاز این آموزش شامل موارد زیر است:

  1. آشنایی با شی گرایی
  2. آشنایی با Interface
  3. آشنایی با متد
  4. آشنایی با if
  5. دیزاین پترن

Creational Design Pattern

یکی از زیر شاخه های دیزاین پترن Creational Design Pattern هست. این پترن راهی برای ساخت اشیاست. وقتی از این الگو استفاده میشود که ما میخواهیم در برنامه خود از یک کلاس یک شی را بسازیم. اما برای بسیاری ممکن است ساخت شی بسیار ساده باشد و فقط با new کردن ما یک شی را بسازیم. اما hard code راه حل خوبی نیست!! زیرا ما بعضی اوقات در کد خود هویت یک کلاس را عوض کنیم و در این گونه اوقات ما باید از Creational Design pattern استفاده میکنیم.

Factory پترن در جاوا

Factory پترن یکی از پر کاربردترین الگوی های طراحی است. این پترن یکی از زیر شاخه های Creational Design Pattern است. هدف Factory پترن این است که یک interface یا کلاس Abstract بسازید ولی فرزندان تصمیم بگیرند چه شی ای را بسازند. ممکن است سر در گم کننده باشد به همین دلیل توضیح کوتاهی از این روش میدهیم.

فرض کنید شما مشتری هستید و یک محصولی را نیاز دارید ولی بجای اینکه خودتان این محصول را تهیه کنید(استفاده از new) به یک کارخانه مراجعه و از آن کارحانه محصولی که میخواهید را طلب میکنید. کارخانه ویژگی های محصول را از شما سوال و بعد از ساخت به شما میدهد.

Factory پترن در جاوا

مثال Factory پترن در جاوا

برای درک بیشتر Factory پترن در این قسمت یک مثال خواهیم زد. ما یک interface داریم به نام Shape . سه کلاس به نام Circle و Square و Rectangle این interface را implements میکنند. کد آنها به صورت زیر است:

حالا نوبت به ساخت کارخانه است. ما این کلاس را ShapeFactory نامگذاری کردیم. کد این کلاس به صورت زیر است:

برای تست کدهای بالا، کد main زیر را بزنید(این دقیقا همان مشتری است که گفته شد):

کلاس های Shape و Rectangle و Circle و Square دقیقا از الگوی Factory استفاده کردند یعنی یک interface داریم که ساخت اشیا به کلاس دیگر میرسد. اما کلاس ShapeFactory همان کارخانه مسئول ساخت اشیا است. Main ما نیز همان مشتری ما است.

پسورد: www.codegate.ir

 

دسته : design pattern, java, جاوا, دیزاین پترن

دیدگاه بگذارید

نظر شما چیست؟

مطلع کردن شما از
avatar

wpDiscuz