آشنایی با Factory Design Pattern
شنبه 7 آذر 1394Factory یک الگوی طراحی رایج بین برنامه نویسان است. این الگوی طراحی نیز مانند بقیه الگوها برخی مشکلات نرم افزاری را حل می کند. این الگو، پایه Factory Method pattern و Factory design pattern می باشد. هدف از این مقاله توضیح پایه و اولیه factory می باشد که کجا و چگونه پیاده سازی شده است.
تعریف
.. ایجاد اشیاء را بدون قرار دادن منطق نمونه برای کلاینت(مشتری) ایجاد کنید.
.. شیئی که به تازگی از طریق یک interface مشترک ایجاد شده را ارجاع دهید.
عملکرد
حالا می خواهیم ببینیم که Design pattern Factory چگونه مشکل طراحی را حل می کند. یک برنامه کلاینت برای showroom ایجاد می کنیم ، به این صورت که کاربر می آید و بر اساس مشخصاتی که در نظر دارد، یک ماشین درخواست می دهد.
راه حل
1. برای همین یک کلاس abstract از car ایجاد می کنیم که توسط دیگر ماشین ها پیاده سازی خواهند شد.
2. حالا اجازه دهید این کلاس را با ماشین های کمتری پیاده سازی کنیم.
3. حالا یک برنامه برای مشتری ایجاد می کنیم به طوری که کاربر یک ماشین را انتخاب می کند و تمام خصوصیت های ماشین را در آن خواهد دید.
کد را اجرا می کنیم و خروجی به صورت زیر است:
این خروجی نشان می دهد که چگونه می توانیم به برنامه showroom دسترسی داشته باشیم. این همان چیزی است که انتظار داشتیم.
بیان مسئله
اما چند مشکل با این کد وجود دارد:
1. مشتری از کد آگاه است.
2. بسیاری موارد جدید هستند.
3. شرط های بسیاری وجود دارد.
4. اگر ماشین جدید وارد شود کد مشتری باید تغییر کند.
همه موارد بالا با الگوی طراحی factory حل می شود.
اجازه دهید این مشکل را حل کنیم:
1. برای حل این مشکل توسط Factory ابتدا باید یک کلاس factory ایجاد کنیم.
2. همچنین کد کلاینت باید طبق نیازمندی های ما در کلاینت تغییر کند.
حالا این کد را اجرا می کنیم:
ما می توانیم شیئ منطقی ایجاد/نمونه سازی را از مشتری به Factory با هر دو روش حذف کنیم.
توضیحات بالا برای درک پایه و اساس پیاده سازی Factory کافی است.
تغییرات بیشتر و پیاده سازی پیشرفته که می تواند برای حل تمام مسائل انجام شود را با کد factory زیر مشخص کرده ایم:
همانطور که در متد ( )getCar دیدید عبارت بازگشتی به صورت زیر است:
Return car.CreateCar();
این متد برای دریافت یک نمونه از ماشین درخواست شده از factory به کد مشتری نیاز دارد. برای این کار برخی تغییرات را در کلاس های abstract Car و کلاس پیاده سازی ایجاد می کنیم.
کد مشتری(client)
1. با این کد ماشین های بیشتری می توانند اضافه شوند که این در متد register از Factory انجام می گیرد.
2. شرط را حذف کنید تا کد انعطاف بیشتری داشته باشد.
3. همچنین تمام کلمات کلیدی جدید را حذف کنید.
- C#.net
- 4k بازدید
- 3 تشکر