
دیزاین پترنها یا الگوهای طراحی به مجموعهای از راهحلها برای مشکلات متداول و پیشبینی شده میگویند که افراد حرفهای در برنامهنویسی از آنها استفاده میکنند که 23 الگو معروف داریم که هرکدام راه حلی برای مشکلی هستند این 23 الگو توسط 4 نفر معروف بهgang of four جمعآوری شدهاند.
که در دوره دیزاین پترن ها در سی شارپ سایت باگتو این 23 الگو را بصورت کامل آموزش داده ایم و توصیه می کنم برای دیدنآموزش دیزاین پترنحتما این دوره رو ببینید.
در این مقاله مقدمهای از الگویfactoryکه به آن الگوی کارخانهها هم به او گفته میشود را آموزش میبینیم.
در مقاله کدام دیزاین پترن ها در برنامه نویسی معروف هستند؟ دیزاین پترن های معروف رو معرفی کردیم که الگوی factory method جز این دسته از الگوها قرار دارد.
چه زمانی از این الگویFactory Methodاستفاده میکنیم و کاربرد آن چیست؟
در برنامههاinterfaceهایی داریم که پیادهسازیهای مختلفی از آن انجام شده و میبینیم که نمونهسازیهای ما در کد پخش شدهاند و بسیار نامرتب پخش شدهاند است بصورتی که مدیریتکردن آن سخت میشود و اگر بخواهیم تغییری در نمونهسازی ایجاد کنیم باید کل کدها را جستجو کنیم یا اگر تغییری در کانستراکتور به وجود آید باید کل نمونهها را در کل کد ها تغییر دهیم و مشکلاتی ازاینقبیل برای ما به وجود میآیند. برای رفع این مشکلات الگویfactory methodساخته شد که کار این الگو این است که همه نمونههای ما را در یک کلاس جمع میکند و آن کلاس میشود کلاس مدیریت نمونهها و میتوان بهراحتی نمونهها را مدیریت کرد و این کلاس مسئول نمونهسازی از کلاسهای دیگر است.
زمانی که نمونه سازی از کلاس هایی در جاهای مختلف برنامه انجام می شود.
زمانی که برای کلاینت نوع کلاس های نمونه سازی اهمیتی نداشته باشد.
بررسیUML الگویFactory Method
این الگوumlهای مختلفی با تغییرات جزئی دارد اما تصویری که بیشتر از آن استفاده میشود این تصویر است که در ادامه باهم اینuml را بررسی میکنیم.
همانطور که میبینیم یک کلاسabstract به نامproduct داریم که منظور از آن کلاسinterfaceیا سرویس ما است.
برای این کلاسabstract پیادهسازیهای مختلفی میتوانیم داشته باشیم که در اینuml دو پیادهسازی داریم با نامهای Concrete product 1 ,concrete product 2 پس دو پیادهسازی برای انتزاع خود داریم.
حالا در حالت عادی مستقیماً از این پیادهسازیها نمونهسازی میکردیم و یا با استفاده از تزریق وابستگی از این پیادهسازیها و انتزاع خود استفاده میکردیم.
اما زمانی که از الگوی کارخانه استفاده میکنیم یک کلاسabstract دیگر ایجاد میکنیم که کارش نمونهسازی از پیادهسازیها است که درuml نام آنCreatorاست
این کلاسcreatorدرون خود یک متد دارد به نامfactory method که خروجی آن از نوع کلاس انتزاع ما است(product)و سپس میآییم یک پیادهسازی برای این کلاسcreatorایجاد میکنیم و درون آن پیادهسازی متدfactory methodرا پیادهسازی میکنیم و بر اساس هر شرایطی تصمیم میگیریم که از کدام نمونهسازی کلاس انتزاع خود استفاده کنیم و مثلاً کلاینت میتواند با استفاده از متدی که شما طراحی کردهاید و ورودی دارد انتخاب کند که میخواهد از کدام نمونهسازی استفاده کند.
Concrete product 1یاconcrete product 2 و در برخی مواقع کلاینت برایش فرقی ندارد که از کدام نمونه سازی استفاده کند و ما در پروژه بر اساس سیاست های پروژه تصمیم میگیریم که از کدام نمونه به کلاینت بدهیم.
نقاط قوت الگوی factory method
- کاهش اتصال محکم و وابستگی ها
- رعایت اصلDIP
- متمرکز سازی ایجاد در یک مکان
- راحتی اعمال تغییرات
نقاط ضعف الگوی factory method
- پیچیدگی کدها
امیدواریم که تا حدقابل قبولی شما را با الگوی factory method آشنا کرده باشیم اما دیزاین پترن ها موضوع بسیار گستردهای است پس پیشنهاد میکنیم که حتماً دوره دیزاین پترن ها در سی شارپ که تمامی 23 دیزاین پترن بهصورت کامل آموزشدادهشده است رو حتما ببینید.