Sobes.tech
Junior — Middle

Fabrika usuli va 'Abstrakt Fabrika' naqshlari orasidagi asosiy farqlarni tushuntiring.

sobes.tech AI

AIdan javob

Fabrika usuli (Factory Method) interfeys uchun obyektni yaratish uchun belgilaydi, lekin qaysi sinfni instansiya qilishni qaror qilish uchun subklasslarga imkon beradi. Ya'ni, aniq obyektni yaratish subklasslarga topshiriladi. Odatda, bu, bir mahsulot va uning turli variantlari bo'lsa, ishlatiladi.

Abstrakt Fabrika (Abstract Factory) bog'liq yoki bog'liq bo'lmagan obyektlar oilasini yaratish uchun interfeys taqdim etadi, lekin ularning aniq sinflarini ko'rsatmaydi. Bu, turli, ammo bog'liq obyektlarni yaratish uchun bir nechta fabrikalar metodlarini birlashtiradigan yuqori darajadagi shablondir.

Asosiy farqlar:

  • E'tibor: Fabrika usuli bitta mahsulotni yaratadi, Abstrakt Fabrika — mahsulotlar oilasini.
  • Struktura: Fabrika usuli odatda meros olish va yaratish metodini qayta yozish orqali amalga oshiriladi, Abstrakt Fabrika esa kompozisiya va interfeyslar to'plami orqali.
  • Foydalanish: Fabrika usuli, bir xil turdagi obyektlarni variatsiyalar bilan yaratish kerak bo'lsa, mos keladi, Abstrakt Fabrika esa turli turlardagi bog'liq obyektlarni birga ishlash uchun yaratishda qo'llaniladi.

Dart (Flutter) uchun fabrikani metodiga misol:

abstract class Button {
  void render();
}

class AndroidButton implements Button {
  @override
  void render() => print('Android tugmasi');
}

class IOSButton implements Button {
  @override
  void render() => print('iOS tugmasi');
}

abstract class Dialog {
  Button createButton();
  void render() {
    var button = createButton();
    button.render();
  }
}

class AndroidDialog extends Dialog {
  @override
  Button createButton() => AndroidButton();
}

class IOSDialog extends Dialog {
  @override
  Button createButton() => IOSButton();
}

Bu yerda, Dialog platformaga qarab turli tugmalarni yaratadigan fabrikani metod hisoblanadi.

Abstrakt Fabrika, masalan, tugmalar va belgilash qutilari kabi bir nechta bog'liq mahsulotlarni yaratishni o'z ichiga oladi, ular bir-biriga mos kelishi kerak.