Sobes.tech
Junior — Middle

Fabrika üsulu və 'Abstrakt Fabrika' naxışları arasındakı əsas fərqləri izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

Fabrik Metodu (Factory Method) interfeys üçün obyekt yaratmaq üçün arayüz təyin edir, lakin hansı sinfin instansiya ediləcəyinə qərar vermək üçün alt siniflərə imkan verir. Yəni, konkret obyektin yaradılması alt siniflərə tapşırılır. Ümumiyyətlə, bir məhsul və onun müxtəlif tətbiq variantları olduqda istifadə olunur.

Abstrakt Fabrika (Abstract Factory) əlaqəli və ya asılı obyektlər ailəsini yaratmaq üçün interfeys təmin edir, lakin onların konkret siniflərini göstərmir. Bu, müxtəlif, lakin əlaqəli obyektləri yaratmaq üçün bir neçə fabrik metodunu birləşdirən daha yüksək səviyyəli nümunədir.

Əsas fərqlər:

  • Diqqət: Fabrika Metodu bir məhsul yaradır, Abstrakt Fabrika — məhsul ailəsini.
  • Struktura: Fabrika Metodu adətən irs və yaradılma metodunun yenidən yazılması ilə həyata keçirilir, Abstrakt Fabrika isə kompozisiya və interfeys seti ilə.
  • İstifadə: Fabrika Metodu, eyni tipli obyektləri müxtəlif variantlarla yaratmaq lazım olduqda uyğundur, Abstrakt Fabrika isə müxtəlif tiplərdə əlaqəli obyektləri birlikdə işlətmək üçün yaradır.

Dart (Flutter) üçün Fabrika Metodu nümunəsi:

abstract class Button {
  void render();
}

class AndroidButton implements Button {
  @override
  void render() => print('Android Düyməsi');
}

class IOSButton implements Button {
  @override
  void render() => print('iOS Düyməsi');
}

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();
}

Burada, Dialog platformaya görə müxtəlif düymələr yaradan fabrik metodudur.

Abstrakt Fabrika, məsələn, düymələr və seçim qutuları kimi əlaqəli çoxsaylı məhsulları yaratmağı əhatə edir, onlar bir-biri ilə uyğun olmalıdır.