آشنایی با الگوی طراحی Factory


در این آموزش قصد داریم تا یک الگوی طراحی تحت عنوان Factory Design Pattern را معرفی کرده و همچنین لزوم به‌کارگیریِ آن در برنامه‌نویسی شیئ‌گرا را شرح دهیم. به طور کلی، این الگوی طراحی زیرشاخۀ الگوهای Creational قرار می‌گیرد که در ادامه و در قالب مثالی کاربردی در زبان برنامه‌نویسی PHP آن را پیاده‌سازی خواهیم کرد.

در پاسخ به این پرسش که «اساساً در چه شرایطی از دیزاین پترن فکتوری در توسعۀ اپلیکیشن استفاده می‌کنیم؟» باید گفت در صورتی که بخواهیم هر یک از کلاس‌های پیاده‌سازی‌شده در اپلیکیشن‌مان وظایف واحدی را بر عهده داشته باشند که این امر خود بر قانونی تحت عنوان Single Responsibility Principle یا به اختصار SRP اشاره دارد که برای کسب اطلاعات بیشتر در این رابطه می‌توانید به دورهٔ آموزش قوانین SOLID مراجعه نمایید.

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

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

جمع‌بندی
به طور کلی، استفاده از دیزاین پترن فکتوری منجر بدین خواهد شد تا وظایفی همچون ساخت و مدیریت آبجکت‌ها بر عهدۀ تنها یک کلاس نبوده و هر کلاس صرفاً یک کار خاص را انجام دهد و از همین روی ساخت آبجکت جدید و یا تغییر در متدهای مربوط به آن‌ها نیاز به اِعمال تغییرات در تمامی قسمت‌های اپلیکیشن نخواهد داشت چرا که آبجکت‌های مذکور صرفاً در یک کلاس ساخته‌ شده و از طریق همین کلاس نیز به سادگی می‌توانیم تغییرات مد نظر خود را در آن‌ها اِعمال کنیم.

دانلود فایل‌های تمرین


اکرم امراه‌نژاد

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
e.kiasaty
e.kiasaty
۱۳۹۸/۰۲/۰۶
تو این مثال دو کلاس CarModelR و CarModelS کاملا مثل هم هستند و اصل Don t repeat yourself رعایت نشده.
نمی‌شه جوری این اپلیکیشن پیاده‌سازی کرد که این اتفاق نیفته؟
سؤال بعدی هم موردی هست که مجید بهش اشاره کرد. موقع خوندن این سؤال برام پیش اومد که چرا انقدر شبیه Strategy Pattern هستش. این اپلیکیشن رو میشه با Strategy pattern هم پیاده‌سازی کرد؟
مجید
مجید
۱۳۹۸/۰۱/۱۸
مثال کاملا شبیه استراتژی پترن بود به نظرم که می‌شد مثال بهتری زد