تكرار السؤال: …
الإجابة المختصرة
نمط Factory Method يعتمد على الوراثة لإنشاء نوع واحد من الكائنات عبر دالة مخصصة، بينما Abstract Factory يعتمد على التركيب لإنشاء عائلات كاملة من الكائنات المترابطة دون تحديد فئاتها الملموسة.
الشرح
في Factory Method، تمتلك الفئة دالة createProduct() تترك للفئات المشتقة حرية اختيار المنتج الملموس. أما في Abstract Factory، توجد واجهة برمجية كاملة تحتوي على عدة دوال إنشائية لإنشاء عائلة كاملة من المنتجات المتوافقة (مثل واجهة GUIFactory التي تنشئ Button و Checkbox لأنظمة مختلفة: WindowsFactory و MacFactory).
مثال بالكود
interface GUIFactory {
createButton(): Button;
createCheckbox(): Checkbox;
}
class WinFactory implements GUIFactory {
createButton() { return new WinButton(); }
createCheckbox() { return new WinCheckbox(); }
}أخطاء شائعة
- استدعاء أي دالة ثابتة تنشئ كائناً (مثل User.create()) باسم Abstract Factory؛ الدوال الثابتة البسيطة تسمى Simple Factory.