Sobes.tech
Junior — Middle

Објасните главне разлике између образаца 'Фабрички метод' и 'Апстрактна фабрика'.

sobes.tech АИ

Одговор од АИ

Шаблон Fabrika metoda (Factory Method) definiše interfejs za kreiranje objekta, ali omogućava podklasama da odluče koja klasa će biti instancirana. Drugim rečima, kreiranje konkretnog objekta se delegira podklasama. Obično se koristi kada postoji jedan proizvod i više varijanti njegove implementacije.

Apstraktna fabrika (Abstract Factory) pruža interfejs za kreiranje porodica povezanih ili zavisnih objekata bez navođenja njihovih konkretnih klasa. To je obrazac višeg nivoa koji kombinuje nekoliko fabrika metoda za kreiranje različitih, ali povezanih objekata.

Glavne razlike:

  • Fokus: Fabrika metoda kreira jedan proizvod, Apstraktna fabrika — porodicu proizvoda.
  • Struktura: Fabrika metoda se obično implementira putem nasleđivanja i prepisivanja metode za kreiranje, Apstraktna fabrika putem kompozicije i skupa interfejsa.
  • Upotreba: Fabrika metoda je pogodna kada je potrebno kreirati objekte istog tipa sa varijacijama, Apstraktna fabrika kada je potrebno kreirati povezane objekte različitih tipova koji treba da rade zajedno.

Primer u Dart (Flutter) za fabriku metoda:

abstract class Button {
  void render();
}

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

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

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

Ovde, Dialog je fabrika metoda koja kreira različite dugmiće u zavisnosti od platforme.

Apstraktna fabrika će uključivati kreiranje više povezanih proizvoda, na primer, dugmića i polja za potvrdu, koji moraju biti kompatibilni međusobno.