شاید براتون پیش اومده باشه که یه متدی داشته باشید که پارامترها یا argument های زیادی بگیره و این موضوع کد شما رو کثیف کنه. همونطور که میدونید متدها در جاوا میتونن حداکثر 255 پارامتر رو پوشش بدن یا بهتره بگیرم، 255 یونیت. برای درک بهتر یونیت به این لینک مراجعه کنید. شاید بگید 255 که خیلی زیاده! درسته زیاده اما من پروژه ای رو داشتم که نیاز شده بیش از بود 255 تا پارامتر رو داشته باشه. در ضمن توی خیلی از الگوهای کد تمیز نبایستی تعداد پارامترهای یه متد از 3 تا تجاوز کنه. توی کتاب #کد_تمیز از #رابرت_مارتین یا همون Uncle_Bob# هم اشاره شده این موضوع. اینم سندش
گام اول:
یه کلاس داخلی (inner class) یا کلاس عمومی درست کنید که تمامی پارامترهای متد رو به عنوان ویژگی یا attribute داشته باشه. کلاس رو به صورت immutable طراحی کنید.
گام دوم:
برای راحتی کار میتونید یه کلاس builder هم براش بسازید تا راحت تر بتونید از این کلاس شیء جدید ایجاد کنید. حالا یا از @builder در lombok یا خودتون بسازید.
گام آخر
یه constructor از کلاس پارامترهای خودتون برای کلاس اصلی ایجاد کنید.
در زیر یه نمونه از کد و طراحی کلاس رو آوردم:
تو مثال زیر کلاس SearchService دو متد search داره که میخوایم با استفاده از الگوی طراحی MethodParameter اصلاحش کنیم.
بعد از تغییرات
تو کلاس زیر یه زیر کلاس به نام ParameterObject ایجاد شده که یه سازنده از نوع builder داره
حالا ما برای استفاده ازش میتونیم بنویسیم:
دیاگرامش رو هم میتونید اینجا ببینید:
شاد باشید!