یکی از ساده ترین الگوهای GRASP هست و جوابی به یک سوال عمومی. هنگام توسعه نرم افزار حتما بارها و بارها نیاز به ساخت یک شی از یک کلاس داشتید. اما سوال اساسی این است که چه کسی وظیفه ساخت نمونه از کلاس مورد نظر ما رو دارد؟ تخصیص درست این وظیفه میتواند باعث پایین آوردن وابستگیها، بالا بردن وضوح طراحی و در نهایت بالابردن قابلیت استفاده مجدد از برنامه ما بشود..
خوب طبق تعریفی که آقای لارمن در این مورد دارند کلاس B وظیفه ساخت کلاس A را باید به عهده داشته باشد تنها اگر یکی از شرایط زیر وجود داشته باشد.
برای روشن تر شدن موضوع به تصویر زیر دقت کنید:
همانطور که در تصویر مشاهده میکنید هدف ما طراحی سیستم برای ثبت سفارش است. هر سفارش تعدادی خطوط سفارش دارد که جزئیات آن را نگهداری میکند. و هر خط سفارش شامل یک کالا است. حالا سوالی که مطرح میشود این است که در این سیستم مسئول ایجاد شی از جنس SalesLineItem کدام یک از کلاسهای موجود در تصویر است؟ با توجه به رابطهای که بین کلاس Sale و SalesLineItem وجود دارد و مد نظر قراردادن بایدها و نبایدهای الگوی Creator مسئولیت این کار به عهده کلاس Sale است.
با توجه به مطالبی که گفته شد، همانطور که در نمودار بالا نحوه تحقق این موضوع را مشاهده میکنید. در هر جایی از برنامه نیاز به ساخته شدن SalesLineItem داشته باشیم، دستور MakeLineItem با تعداد کالایی که قرار است در ردیف سفارش قرار بگیرد برای Sale ارسال میشود و کلاس Sale نمونه ای از SalesLineItem با مشخصات مورد نیاز را میسازد.
بگرفته از سایت نیک آموز
برای مطالعه ی ادامه مطالب به لینک مراجعه کنید.