علی قدرتی
علی قدرتی
خواندن ۱ دقیقه·۳ سال پیش

Creator

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

خوب طبق تعریفی که آقای لارمن در این مورد دارند کلاس B وظیفه ساخت کلاس A را باید به عهده داشته باشد تنها اگر یکی از شرایط زیر وجود داشته باشد.

  • کلاس B شامل کلاس A باشد. یا یک رابطه Aggregation با هم داشته باشن.
  • کلاس B سوابق کلاس A را نگهداری کند.
  • کلاس B استفاده بسیار زیادی از کلاس A داشته باشد
  • کلاس B اطلاعاتی در اختیار داشته باشد که برای ساخته شدن کلاس A ضروری است

برای روشن تر شدن موضوع به تصویر زیر دقت کنید:

همانطور که در تصویر مشاهده می‌کنید هدف ما طراحی سیستم برای ثبت سفارش است. هر سفارش تعدادی خطوط سفارش دارد که جزئیات آن را نگهداری می‌کند. و هر خط سفارش شامل یک کالا است. حالا سوالی که مطرح می‌شود این است که در این سیستم مسئول ایجاد شی از جنس SalesLineItem کدام یک از کلاس‌های موجود در تصویر است؟ با توجه به رابطه‌ای که بین کلاس Sale و SalesLineItem وجود دارد و مد نظر قراردادن بایدها و نبایدهای الگوی Creator مسئولیت این کار به عهده کلاس Sale است.

با توجه به مطالبی که گفته شد، همانطور که در نمودار بالا نحوه تحقق این موضوع را مشاهده می‌کنید. در هر جایی از برنامه نیاز به ساخته شدن SalesLineItem داشته باشیم، دستور MakeLineItem با تعداد کالایی که قرار است در ردیف سفارش قرار بگیرد برای Sale ارسال می‌شود و کلاس Sale نمونه ای از SalesLineItem با مشخصات مورد نیاز را می‌سازد.


بگرفته از سایت نیک آموز


برای مطالعه ی ادامه مطالب به لینک مراجعه کنید.

graspgrasp principlessoftware engineeringcreatorcreator principle
شاید از این پست‌ها خوشتان بیاید