- Published on
تکنیک Factory در برنامهنویسی شیءگرا
- نویسندگان
- نام
- هومن امینی
- توییتر
- @HoomanAmini
مقدمه
در برنامهنویسی شیءگرا، یکی از مهمترین چالشها مدیریت ایجاد اشیاء است. در بسیاری از موارد، استفادهی مستقیم از new
برای نمونهسازی اشیاء باعث افزایش وابستگی بین کلاسها و کاهش انعطافپذیری میشود. برای حل این مشکل، تکنیک Factory معرفی شده است.
تکنیک Factory یک الگوی طراحی رسمی نیست، بلکه یک تکنیک برنامهنویسی (Programming Idiom) است که مسئولیت ایجاد اشیاء را از کلاسهای دیگر جدا میکند. این تکنیک معمولاً در قالب کلاس مستقل Factory پیادهسازی میشود.
در این مقاله، بهصورت گامبهگام مفهوم کلاس مستقل Factory را بررسی کرده و آن را با مثالهای عملی در جاوا پیادهسازی خواهیم کرد.
📌 نکته: الگوی Factory Method Pattern نیز یک روش پیشرفتهتر برای مدیریت ایجاد اشیاء است که در ادامه این مقاله به آن اشاره میکنیم و در مقالهی بعدی بهطور کامل بررسی خواهد شد.
🔹 تکنیک Factory چیست؟
تکنیک Factory روشی است که در آن ایجاد اشیاء در یک کلاس مستقل انجام میشود و دیگر نیازی نیست که کلاسهای دیگر مستقیماً از new
برای نمونهسازی استفاده کنند.
✅ مزایای تکنیک Factory:
- کاهش وابستگی بین کلاسها
- مدیریت بهتر فرآیند ایجاد اشیاء
- امکان تغییر پیادهسازی بدون تغییر در کد اصلی
- افزایش خوانایی و نگهداری بهتر کد
این تکنیک معمولاً بهصورت یک کلاس مستقل Factory پیادهسازی میشود که مسئول ایجاد اشیاء است و در کل برنامه استفاده میشود.
🔹 پیادهسازی کلاس مستقل Factory
در این روش، یک کلاس مستقل برای ایجاد اشیاء مختلف ایجاد میکنیم که از آن در سراسر برنامه استفاده شود.
📌 پیادهسازی کلاس Factory مستقل
public class SimplePizzaFactory {
public Pizza createPizza(String type) {
if (type.equals("cheese")) {
return new CheesePizza();
} else if (type.equals("pepperoni")) {
return new PepperoniPizza();
} else {
return null;
}
}
}
📌 نحوه استفاده از کلاس Factory در یک سیستم واقعی
public class PizzaStore {
private SimplePizzaFactory factory;
public PizzaStore(SimplePizzaFactory factory) {
this.factory = factory;
}
public Pizza orderPizza(String type) {
Pizza pizza = factory.createPizza(type);
if (pizza != null) {
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
}
return pizza;
}
}
📌 مزایا و معایب این روش:
✅ مزایا:
- مدیریت بهتر فرآیند ایجاد اشیاء بدون نیاز به تغییر در کلاسهای اصلی.
- افزایش خوانایی و نگهداری کد.
- کاهش وابستگی مستقیم بین کلاسها.
❌ معایب:
- همچنان اگر تغییری در نوع اشیاء ایجاد شود، باید
SimplePizzaFactory
تغییر کند. - برای پروژههای پیچیدهتر، Factory Method Pattern انعطافپذیری بیشتری ارائه میدهد که در ادامه توضیح داده شده است.
🔹 تفاوت بین کلاس مستقل Factory و Factory Method Pattern
🔹 کلاس مستقل Factory یک روش ساده برای جدا کردن فرآیند ایجاد اشیاء از کلاسهای اصلی است. اما همچنان یک مشکل اساسی دارد: اگر بخواهیم رفتار ایجاد اشیاء را بدون تغییر در کلاس Factory سفارشیسازی کنیم، این تکنیک انعطافپذیری کافی را ندارد.
🔹 Factory Method Pattern این مشکل را حل میکند. در این الگو، ایجاد اشیاء به یک متد انتزاعی در کلاس والد واگذار میشود و هر زیرکلاس خودش تصمیم میگیرد که چه شیئی را تولید کند.
✅ تفاوت کلیدی:
ویژگی | کلاس مستقل Factory | Factory Method Pattern |
---|---|---|
ایجاد اشیاء | توسط یک کلاس ثابت انجام میشود | توسط زیرکلاسها سفارشیسازی میشود |
انعطافپذیری | کمتر – نیاز به تغییر کلاس Factory برای افزودن نوع جدید | بیشتر – زیرکلاسها فقط متد createPizza() را تغییر میدهند |
توسعهپذیری | اگر شیء جدیدی اضافه شود، باید SimplePizzaFactory تغییر کند | میتوان نوعهای جدید را بدون تغییر در کلاسهای قبلی اضافه کرد |
وابستگی به کلاسهای مشخص | وابسته به یک کلاس واحد است | وابستگی کاهش یافته، چون تولید اشیاء از کلاس والد جدا شده است |
📌 در مقاله بعدی، Factory Method Pattern را با جزئیات بیشتری بررسی خواهیم کرد و نحوهی پیادهسازی آن را توضیح خواهیم داد.
🔹 نتیجهگیری
کلاس مستقل Factory یک روش ساده اما بسیار مفید برای مدیریت ایجاد اشیاء در برنامهنویسی شیءگرا است. این تکنیک با جدا کردن فرآیند نمونهسازی از کلاسهای اصلی، وابستگیها را کاهش میدهد و امکان مدیریت بهتر تغییرات را فراهم میکند.
📌 اگر پروژهی شما ساده است و نیاز به تغییرات زیادی در نحوهی ایجاد اشیاء ندارید، کلاس مستقل Factory مناسب است. اما اگر نیاز به انعطافپذیری و توسعهپذیری بیشتری دارید، Factory Method Pattern گزینهی بهتری خواهد بود که در مقالهی بعدی بهطور کامل بررسی میشود.