الگوی طراحی Faceted Builder
شناسه پست: 3055
بازدید: 755

در دو مقاله قبلی، ما در مورد الگوی Builder Design و  Fluent Builder به همراه Generic بازگشتی صحبت کردیم. ما توصیه میکنیم که حداقل مقاله اول را برای درک بهتر الگوی Builder Design مطالعه کنید. دومین مقاله، مقاله ارتقا یافته از مقاله اول است و اگر میخواهید بیشتر در مورد استفاده از generic بازگشتی با الگوی Builder را یاد بگیرید، توصیه میکنیم این مقاله دوم را نیز بخوانید.

این مقاله، بخشی از مجموعه آموزشی زیر است:

چرا ما به Faceted Builder نیاز داریم؟

بعضی اوقات ما ممکن است یک آبجکت complex داشته باشیم و فرآیند خلق آبجکت به بیش از یک کلاس builder نیاز داشته باشد. بنابراین، کاری که ما باید انجام دهیم این است که چندین کلاس builder را به گونه ای معرفی کنیم که بتوانیم هنگام ایجاد آبجکت خود، از یک builder به builder دیگر بپریم.

رویکرد Faceted Builder به مقدار قابل توجهی در این فرآیند به ما کمک میکند، زیرا ما یک facade را بر روی builder های خود میسازیم و آن facade به ما اجازه میدهد تا تمام آن builder ها را برای ایجاد یک آبجکت واحد استفاده کنیم.

حالا یاد بگیریم که چطور باید این کار را انجام دهیم.

برای مشاهده لیست کامل مقالات این مجموعه آموزشی، الگوهای طراحی #C را بررسی کنید.

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

پیاده سازی Faceted Builder

ما میخواهیم کارمان را با ایجاد یک آبجکت مدل “complex” شروع کنیم:

ما در این آبجکت مدل، یک قسمت اطلاعات داریم و یک قسمت آدرس. بنابراین میخواهیم از دو builder برای ایجاد کل این آبجکت استفاده کنیم.

همانطور که قبلا گفتیم، یک facade نیاز داریم. بنابراین با آن شروع میکنیم:

ما آبجکت Car را که میخواهیم build  کنیم و از طریق متد Build، آن را در معرض استفاده قرار دهیم را نمونه سازی میکنیم.

چیزی که ما در حال حاضر نیاز داریم ایجاد builder های مربوطه است. بنابراین با CarInfoBuilder شروع میکنیم که باید از کلاس facade ارث بری کند:

همانطور که می بینیم، از طریق سازنده، آبجکتی را که می خواهیم بسازیم را دریافت می کنیم و از اینترفیس fluent برای هدف ساخت استفاده می کنیم.

همین کار را برای کلاس CarAddresBuilder نیز انجام میدهیم:

در این لحظه، ما دو کلاس builder داریم. اما هنوز ساخت آبجکتمان را نمیتوانیم شروع کنیم، چرا که ما builder های خود را در کلاس facade قرار نداده ایم. پس این کار را انجام میدهیم:

از این لحظه، ما می توانیم ساخت آبجکت خود را شروع کنیم:

و تمام. ما آبجکت خود را با رویکرد Faceted Builder ساختیم.

نتیجه گیری

با این مقاله، ما به پایان این سری آموزشی کوتاه از آموزش الگوی طراحی Builder رسیدیم. اما مقالات بیشتری در مورد الگوهای طراحی در #C پیش رو داریم. پس در مقالات بعدی با ما همراه باشید.

نویسنده

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