یک فنجان جاوا - دیزاین پترن ها Design Patterns

(در نوشتن سری مقالات یک فنجان جاوا - دیزاین پترن ها Design Patterns فرض شده که خواننده تا حدودی با ساختار برنامه نویسی جاوا آشناست و صرفاً به بررسی و پیاده سازی الگوهای طراحی این زبان پرداختم)

بصورت کلی میدونیم که دیزاین پترن ها مجموعه ای از راهکارهای برنامه نویسی هستن که به برنامه نویس کمک می‌کنن تا یه برنامه با بهترین ساختار پیاده سازی بشه. دیزاین پترن ها در جزئیات یه برنامه دخالتی ندارن و مربوط به نحوه ی پیاده سازی کدها میشن. با اینکه مبحث دیزاین پترن ها ظاهراً ساده ولی در عمل پیچیده و سطح بالا هستن، و حتی خیلی از برنامه نویسایی که چندین سال تجربه دارن هم از بعضی از دیزاین پترن ها استفاده نمیکنن (حتی اگه اونارو بشناسن، موقع پیاده سازی یا به ذهنشون نمیرسه یا نمیدونن کجا و چجوری ازشون استفاده کنن).

بذارین اینجوری بگیم که یه دیزاین پترن کدی نیست که به تنهایی قابل اجرا باشه، بلکه رویکردیه برای حل چالشای موجود توی برنامه نویسی. یه دیزاین پترن، یه کلاس، کتابخونه، تابع یا هر مفهوم دیگه ای که ممکنه بشناسیم نیست، بلکه یه قالب یا به عبارتی نحوه ی پیاده سازی کد هست که باید جای مناسبی ازش استفاده بشه. اکثراً هم مستقل از زبان برنامه نویسی هستن و فقط شاید ساختار زبان ها روشون تأثیر بذارن. به قول معروف دیزاین پترن مثل چاقوی دولبه میمونه! اگه جای نادرست استفاده بشه میتونه مشکلاتی را برای پروژه و هندل کردنشون ایجاد کنه، ولی اگه جای درستی استفاده بشه می تونه فرشته نجات برنامه نویسا و توسعه دهنده ها باشه.

در رابطه با دیزاین پترن ها کتاب ها و مقالاتی زیادی نوشته شدن که کتاب زیر یکی از اولین کتابا توی این زمینه هست:

همونطور که گفتیم اکثر دیزاین پترن ها توی خیلی از زبان های برنامه نویسی قابل پیاده سازی هستن، ولی خب توی این مقاله منظور ما از دیزاین پترن، دیزاین پترن های زبان جاوا هست (که طبیعتاً شامل شیء گرایی، ارثبری و سایر ویژگی های این زبان میشه) و در ادامه باهاشون آشنا میشیم.

انواع دیزاین پترن

با توجه به اینکه ما سعی داریم مهمترین دیزاین پترن ها رو بررسی کنیم، میتونیم بگیم اکثرشون به سه دسته ی زیر تقسیم میشن:

  • تکوینی (Creational): که بیشتر به اشیا و شیوه ی ایجادشون مرتبط هستن.
  • ساختاری (Structural): که بیشتر به ساختار کلاسها و ترکیب اشیاء میپردازن.
  • رفتاری (Behavioral): که بیشتر به ارتباط اشیاء در عین جداسازی عملکردشون تأکید دارن.

خب بریم ببینیم شامل چه مواردی میشن:

Creational

Structure

Behavioral

  • Chain of Responsibility
  • Interpreter
  • Command
  • Template
  • Memento
  • Observer
  • Mediator
  • Strategy
  • Iterator
  • Visitor
  • State
  • Null Object
  • DAO ( Data Access Object )

(بزودی در مقاله های جداگانه معرفی و لینکشون اضافه میشن، این مقاله هم ممکنه بروزرسانی بشه، خوشحال میشم اگه دوستان در این ارتباط مقاله ای نوشتن بگن تا لینکش رو در اختیار بقیه قرار بدیم)


منتشر شده در ویرگول توسط محمد قدسیان https://virgool.io/@mohammad.ghodsian

https://virgool.io/@mohammad.ghodsian/java-design-patterns-ntnvkqzm3ns0