9e29

الگوی طراحی Factory در سی شارپ

لینک کوتاه https://codecell.ir/a/9e29
به اشتراک گذاری
نویسنده:
0
0
1
آموزش های نویسنده:
الگوی طراحی Factory در سی شارپ

الگوی Factory Method Design چیست؟

Factory Method Design Pattern یا الگوی طراحی کارخانه یک الگوی ایجادی برای ایجاد اشیاء، بدون مشخص کردن کلاس دقیق شی ارائه می ‌کند. به طور مثال در یک کارخانه خودروسازی، می ‌توان از آن برای ساخت انواع مختلف خودروها (مانند خودروهای سدان، شاسی ‌بلند، کامیون‌ها) بدون مشخص کردن مدل دقیق هر خودرو استفاده کرد.

تصور کنید که در حال ایجاد یک برنامه مدیریت لجستیک هستید. اولین نسخه برنامه شما فقط می تواند حمل و نقل با کامیون را انجام دهد، بنابراین بخش عمده کد شما در کلاس Truck قرار دارد.

پس از مدتی، برنامه شما بسیار محبوب می شود. هر روز ده ها درخواست از شرکت های حمل و نقل دریایی برای گنجاندن تدارکات دریایی در برنامه دریافت می کنید.

در حال حاضر، بیشتر کد شما با کلاس Truck کوپل شده است و افزودن کلاس Ship به برنامه مستلزم ایجاد تغییراتی در کل پایگاه کد است. علاوه بر این، اگر بعداً تصمیم گرفتید نوع دیگری از حمل و نقل را به برنامه اضافه کنید، احتمالاً باید همه این تغییرات را دوباره انجام دهید. در نتیجه، کد بسیار بدی خواهید داشت، مملو از شرایطی که رفتار برنامه را بسته به کلاس اشیاء حمل‌ و نقل تغییر می‌دهد. راه حل این مسئله استفاده از الگوی Factory Method است.

ساختار الگوی Factor Method

الگوی Factor Method در اجرای پایه خود چهار جزء دارد:

  •  Product یا محصول: محصول یک اینترفیس را اعلام می کند که برای همه اشیایی که می توانند توسط سازنده و زیر کلاس های آن تولید شوند مشترک است.
  • Concrete Product :Concrete Product ها پیاده سازی های مختلف اینترفیس Product هستند.
  • Creator: کلاس Creator متد Factory را اعلام می کند که  Product های جدید را بر می گرداند. نوع بازگشتی این متد باید با اینترفیس Product مطابقت داشته باشد.
  • Concrete Creator: یک کلاس است که متد پایه Factory را override می کند. بنابراین نوع متفاوتی از Product را برمی گرداند.

در اینجا مثالی از نحوه پیاده سازی الگوی  Factory Method Design در سی شارپ برای یک کارخانه خودرو آورده شده است:

در این مثال، کلاس CarFactory یک Factory و کلاس های Sedan ، SUV و Truck محصولات یا Product ها هستند. متد GetCar از کلاس CarFactory یک Creator است و وظیفه ایجاد نوع مناسب خودرو بر اساس نوع خودروی ورودی را بر عهده دارد. الگوی Factory منطق ایجاد شی را کپسوله کرده است و اضافه کردن Product جدید یا تغییر کلاس های Product موجود را بدون تأثیر بر کد کلاینت آسان می کند.

می توانید از این مثال به عنوان پایه استفاده کنید و با افزودن ویژگی ها یا روش هایی به کلاس Car و کلاس های مشتق شده از آن مانند تعداد درها، اندازه موتور و غیره آن را گسترش دهید.

مشکلات الگوی ساده Factory در سی شارپ

  • اگر نیاز به افزودن هر Product جدیدی (در این مثال یعنی یک خودروی جدید) داشته باشیم، باید یک case جدید به Switch در متد GetCar در کلاس CarFactory اضافه کنیم. این اصل Open closed Principle یا اصل باز و بسته(OCP) در Solid را نقض می کند.
  •  یک اتصال محکم بین کلاس Factory (CarFactory ) و کلاس های Product یا محصول (SUV،Sedan و Truck) وجود دارد.

نتیجه گیری

الگوهای طراحی یکی از مهمترین جنبه های طراحی و معماری نرم افزار است. ما در این مقاله مفاهیم الگوی Factory Method Design را با یک مثال در سی شارپ بررسی و مزایا و معایب آن را بررسی کردیم.

دیگر مقالات آموزش برنامه نویسی مدرس

Response Caching در ASP.NET Core

Response Caching یک مکانیزم ذخیره سازی پاسخ سرور توسط مرورگر یا سایر کلاینت ها است. با استفاده از Response Caching در Asp.net Core می توانیم عملکرد و کارایی سیستم را بالا ببریم.

305 0 1402/10/22

Output Caching در ASP.NET Core 8.0

Output Caching یک ویژگی جدید است که از زمان .NET 7 معرفی شده است. این ویژگی به ما این امکان را می دهد که به راحتی یک کش پاسخ برای Web API خود بدون پیاده سازی IMemoryCache راه اندازی کنیم.

354 0 1402/10/14

الگوی طراحی زنجیره مسئولیت در سی شارپ

الگوی زنجیره مسئولیت یا Chain of Responsibility Design Pattern یک الگوی طراحی رفتاری(behavioral design pattern) است که اجازه می‌دهد یک درخواست در امتداد زنجیره‌ای از کنترل‌کننده‌های بالقوه ارسال شود تا زمانی که درخواست مناسب برای پردازش آن را پیدا کند.

338 2 1402/10/01

ViewComponent در ASP.NET Core

در ASP.NET Core با استفاده از ViewComponent ها می توان اجزای ماژولار، قابل استفاده مجدد، قابل نگهداری و مقیاس پذیر برای ساخت برنامه های کاربردی وب ایجاد کرد. در این مقاله به نحوه ایجاد و فراخوانی ViewComponent در Asp.net core پرداخته ایم.

797 2 1402/05/15

تطبیق الگو در NET 7: ساده سازی تجزیه و تحلیل داده ها

تطبیق الگو یا Pattern Matching در net7 یک تکنیک قدرتمند برای تجزیه و تحلیل و دستکاری داده ها بر اساس ساختار آن ها است. تطبیق الگو یا Pattern Matching به توسعه دهندگان اجازه می دهد تا مقادیر را با یک الگوی خاص مطابقت دهند و اقدامات مربوطه را انجام دهند.

480 1 1402/04/05

تزریق وابستگی در ASP.NET Core

تزریق وابستگی (DI) یک الگوی طراحی نرم افزاری است که امکان ایجاد برنامه های کاربردی و ماژولار را فراهم می کند.. در .NET Core تزریق وابستگی یا Dependency injection یک ویژگی مهم است که می تواند برای ساده سازی توسعه برنامه، بهبود تست پذیری و کاهش پیچیدگی کد مورد استفاده قرار گیرد.

1٬161 1 1402/02/04

ضروری ترین کتابخانه های NuGet برای ASP.NET Core

در این مقاله مهمترین،ضروری ترین و پرکاربردترین کتابخانه های NuGet که هر توسعه‌ دهنده‌ ASP.NET Core باید برای توسعه بهتر و کاهش زمان مورد نیاز برای برنامه ‌های خود از آن استفاده کنند را مورد بررسی قرار داده ایم.

1٬113 1 1401/12/29

Redirect درخواست (ریدایرکت) در asp.net core

در برنامه های ASP.NET Core برای تغییر مسیر(ریدایرکت) و Redirect به یک URL خاص روش های مختلفی وجود دارد. در این مقاله با این تکنیک ها و کدهای مورد نیاز برای تغییر مسیر یک درخواست در ASP.NET Core آشنا می شویم.

2٬087 5 1401/02/12

تبدیل enum به لیست انتخابی در asp.net core

در این آموزش ما بوسیله Reflection ها در سی شارپ و asp.net core یک enum را به لیست انتخابی یا SelectListItem تبدیل خواهیم کرد و بوسیله تگ select در بوت استرپ 5 نمایش می دهیم.

1٬500 3 1401/02/03

نحوه ارسال ایمیل در asp و c#

امروزه ارسال ایمیل به امری ضروری در پروژه های وب تبدیل شده است.از ارسال ایمیل در asp می توان در بخش های تایید حساب کاربری،بازیابی رمز عبور،ایمیل مارکتینگ،ارسال خبرنامه و ... استفاده نمود.در این آموزش نحوه ارسال ایمیل در asp core و سی شارپ پیاده سازی گردیده است.

2٬118 5 1401/02/03
نظرات

برای ثبت نظر باید در سایت ثبت نام یا ورود نمایید