تبلیغات

الگوی طراحی بیلدر (Builder) در جاوا

Builder/بیلدر

الگوی طراحی بیلدر (Builder = سازنده)، که از نوع الگوهای Creational (تولیدی) است، همانند سایر الگوهای تولیدی، برای ایجاد آبجکت از کلاس‌ها استفاده می‌شود. این الگو، ایجاد اشیاء (آبجکت‌های) پیچیده را به روش ساده و مرحله به مرحله برایمان فراهم می‌سازد. همچنین این الگو، معروف است به الگویی جهت حل برخی از مشکلات الگوی طراحی Factory و Abstract Factory در زمانی که آبجکت شامل ویژگی‌های (attributes) زیادی باشد. چراکه سه مشکل عمده با دو الگوی یاد شده وجود دارد:

  1. آرگومان‌های زیاد، برای ارسال از کد اصلی برنامه به کلاس فکتوری، می‌تواند مستعد خطا شود؛ چون در بیشتر مواقع، نوع آرگومان‌های ورودی یکسان بوده و نگهداری و ترتیب‌بندی آنها در سمت کداصلی اپلیکیشن سخت می‌باشد.
  2. برخی از پارامترها ممکن است اختیاری باشند؛ اما در الگوی فکتوری، ما مجبور به ارسال تمامی پارامترها هستیم و در واقع پارامترهای اختیاری را بایستی NULL تنظیم کنیم.
  3. اگر آبجکت سنگین بوده و ایجاد آن پیچیده باشد، بنابراین تمامی این پیچیدگی، بخشی از کلاس‌های فکتوری خواهد بود که گیج کننده است.

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

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

اجازه دهید تا ببینم چگونه می‌توان این الگوی طراحی را در جاوا پیاده کرد:

  1. در اولین قدم، بایستی یک static nested class یا به عبارتی، یک کلاس تودروتو (داخلی)، درون همان کلاس اصلی ایجاد کنیم و سپس تمامی ویژگی‌ها را از کلاس اصلی (بیرونی) به داخل این کلاس (کلاس بیلدر) نیز کپی کنیم. همچنین بهتر است از قواعد نام‌گذاری کلاس‌های بیلدر تبعیت کرده و اگر برفرض نام کلاس FuLLKade باشد، کلاس بیلدر آن نیز باید  FuLLKadeBuilder نام گیرد.
  2. کلاس‌های بیلدر جاوا، بایستی حداقل یک متد سازنده‌ی عمومی داشته باشند تا توسط آن، مقادیر اجباری را دریافت کنند.
  3. کلاس‌های بیلدر جاوا، بایستی متدهایی برای تنظیم ویژگی‌های اختیاری داشته باشند؛ که خود این متدها نیز پس از تنظیم مقدار، همان آبجکت Builder را برگردانند.
  4. مرحله‌ی آخر، ساخت یک متد با نام build (طبق قوانین نام گزاری) می‌باشد؛ و این متد قرار است آّبجکت بیلدر فعلی را به یک نمونه از کلاس اصلی ارسال کرده و سپس آن را برگرداند. متدسازنده‌ای که در کلاس اصلی بیلدر را دریافت می‌کند بایستی private باشد.

در زیر، یک کلاس بیلدر ساده برای کلاس Computer و با نام ComputerBuilder ایجاد کرده‌ایم:

توجه داشته باشید که کلاس Computer، فقط شامل متدهای get بوده و همچنین شامل متدسازنده‌ی public نمی‌باشد. بنابراین تنها راه ایجاد Computer، استفاده از کلاس بیلدر آن خواهد بود. البته کلاس Computer می‌تواند شامل متدهای set نیز باشد تا در زمان ران‌تایم، برخی مقادیر را بتوان تغییر داد.

حالا بیایید از این کلاس در کد اصلی برنامه استفاده کنیم:

به همین سادگی 🙂

تبلیغات
0
کانال تلگرام فول کده
تبلیغات

درباره نویسنده

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک گذاری اطلاعات در هر زمینه‌ای / برنامه‌نویس

پاسخ دهید

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

نظرات ثبت شده بدون دیدگاه