دیزاین‌پترن Builder در اندروید چیست؟

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

A design that doesn’t take change into account risks major redesign in the future. – Erich Gamma

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

  • ساختنی: ارائه‌ی راهکارهایی برای ساخت کلاس ها و اشیاء ( Singleton, Factory, Builder و… )
  • ساختاری: به منظور سازمان دهی و مرتب سازی اشیاء و کلاس ها ( Composite, Facade, Adapter و…)
  • رفتاری: ارائه راهکار برای ایجاد ارتباط بین اشیاء و کلاس ها ( Command, Observer, Strategy و… )

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

 

ز باشه به سازنده کلاس AlertDialog چندین ورودی بدین، با فراخوانی چند متد به صورت متوالی، هم کدتون خوانا تر میشه و هم اگر درحال ساختن یک کتابخانه برای استفاده بقیه برنامه‌نویس ها باشید اونها هم خیلی راحت تر میتونند با کلاس های شما کار کنند و تعامل بقیه با کدتون خیلی بهتر میشه. در واقع در تکه کد بالا از دیزاین‌پترن Builder استفاده شده. حالا سوال اینجاست ما چطور میتونیم توی نرم‌افزارمون این قابلیت رو پیاده سازی کنیم؟

مثال:

اولین قدم برای پیاده سازی دیزاین‌پترن Builder در این مثال اینه که من یک کلاس User ایجاد کنم:

هدف ما اینه کاربرمون به جای اینکه با دادن ورودی های مختلف، یک شی از این کلاس بسازه، با فراخوانی چند متد در نهایت بتونه یک نمونه از این کلاس داشته باشه، به این صورت:

دومین قدم ایجاد یک کلاس static در در داخل کلاس User به نام Builder هست، که کاربرمون با فراخوانی این کلاس، شی رو ایجاد کنه.

در واقع برای هر فیلد در کلاسمون، یک setter ایجاد کردیم که نوع بازگشتیش هم خود کلاس Builder هست. زمانی که آخرین متد یعنی create فراخوانی میشه، یک شی یوزر با اطلاعات داده شده به متدهای setter ساخته شده و به عنوان خروجی متد تحویل متغیر ما داده میشه.

بدون مقررات و طراحی، برنامه‌نویسی هنر قرار دادن باگ در یک فایل متنی خالی است – Louis Srygley

قدم آخر این هست که سازنده‌ کلاس User رو private کنیم تا کاربر نتونه به صورت مستقیم یک نمونه از کلاس بسازه. و به بیانی دیگه در واقع فقط کلاس Builder بتونه این سازنده رو فراخوانی کنه.

به همین راحتی! 🙂 الان میتونید با فراخوانی کلاس Builder و متد هاش از کلاس User یک شی جدید رو بسازید.

نکته بعدی اینکه اگر خواستید بعضی از فیلدهاتون رو اجباری کنید، میتونید این کار رو در متد create از کلاس Builder انجام بدید:

به عنوان آخرین نکته هم دوباره تاکید میکنم این دیزاین‌پترن بیشتر برای زمانی استفاده میشه که اون مدل/کلاس شما دارای فیلد ها و پارامتر های زیادی باشه که با فراخوانی اونها از طریق سازنده خوانایی و تمیز بودن کدتون به شدت کم میشه، میتونید با این روش کد بسیار خوانا تر و کاربرپسند تری بنویسید 🙂

امیدوارم این مطلب براتون مفید بوده باشه 🙂

نوشته دیزاین‌پترن Builder در اندروید چیست؟ اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

پاسخ دهید

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