الگوی factory method (فکتوری متد)

الگوی factory method (فکتوری متد)
فهرست مقاله [نمایش]

    دیزاین پترن‌ها یا الگوهای طراحی به مجموعه‌ای از راه‌حل‌ها برای مشکلات متداول و پیش‌بینی شده میگویند که افراد حرفه‌ای در برنامه‌نویسی از آنها استفاده می‌کنند که 23 الگو معروف داریم که هرکدام راه حلی برای مشکلی هستند این 23 الگو توسط 4 نفر معروف به gang of four  جمع‌آوری شده‌اند.

    که در دوره دیزاین پترن ها در سی شارپ سایت باگتو  این 23 الگو را بصورت کامل آموزش داده ایم و توصیه می کنم برای دیدن آموزش دیزاین پترن حتما این دوره رو ببینید.

    در این مقاله مقدمه‌ای از الگوی factory که به آن الگوی کارخانه‌ها هم به او گفته می‌شود را آموزش می‌بینیم.

     در مقاله کدام دیزاین پترن ها در برنامه نویسی معروف هستند؟ دیزاین پترن های معروف رو معرفی کردیم که الگوی factory method  جز این دسته از الگوها قرار دارد. 

    چه زمانی از این الگوی Factory Method استفاده می‌کنیم و کاربرد آن چیست؟

    در برنامه‌ها interfaceهایی داریم که پیاده‌سازی‌های مختلفی از آن انجام شده و می‌بینیم که نمونه‌سازی‌های ما در کد پخش شده‌اند و بسیار نامرتب پخش شده‌اند است بصورتی که  مدیریت‌کردن آن سخت می‌شود و اگر بخواهیم تغییری در نمونه‌سازی ایجاد کنیم باید کل کدها را جستجو کنیم یا اگر تغییری در کانستراکتور به وجود آید باید کل نمونه‌ها را در کل کد ها تغییر دهیم و مشکلاتی ازاین‌قبیل برای ما به وجود می‌آیند. برای رفع این مشکلات الگوی factory method ساخته شد که کار این الگو این  است که همه نمونه‌های ما را در یک کلاس جمع می‌کند و آن کلاس می‌شود کلاس مدیریت نمونه‌ها و می‌توان به‌راحتی نمونه‌ها را مدیریت کرد و این کلاس مسئول نمونه‌سازی از کلاس‌های دیگر است.

    زمانی که نمونه سازی از کلاس هایی در جاهای مختلف برنامه انجام می شود.

    زمانی که برای کلاینت نوع کلاس های نمونه سازی اهمیتی نداشته باشد.

    بررسی UML  الگوی Factory Method

    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

    1. کاهش اتصال محکم و وابستگی ها
    2. رعایت اصل DIP
    3. متمرکز سازی ایجاد در یک مکان
    4. راحتی اعمال تغییرات

    نقاط ضعف الگوی factory method

    1. پیچیدگی کدها

    امیدواریم که تا حدقابل قبولی شما را با الگوی factory method آشنا کرده باشیم اما دیزاین پترن ها موضوع بسیار گسترده‌ای است پس پیشنهاد می‌کنیم که حتماً دوره دیزاین پترن ها در سی شارپ که تمامی 23 دیزاین پترن به‌صورت کامل آموزش‌داده‌شده است رو حتما ببینید.

     

    اطلاعات نویسنده
    • نویسنده: احمدرضا غلامی

    ارسال دیدگاه

    برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربری‌تان شوید


    دیدگاه کاربران