Sobes.tech
Junior — Middle

Vysvetlite hlavné rozdiely medzi vzormi 'Faktoriálna metóda' a 'Abstraktná továreň'.

sobes.tech AI

Odpoveď od AI

Vzor Fabrika metóda (Factory Method) definuje rozhranie na vytvorenie objektu, ale umožňuje podtriedam rozhodnúť, ktorú triedu inštancovať. Inými slovami, vytvorenie konkrétneho objektu je delegované podtriedam. Zvyčajne sa používa, keď existuje jeden produkt a niekoľko variant jeho implementácie.

Abstraktná továreň (Abstract Factory) poskytuje rozhranie na vytvorenie rodín súvisiacich alebo závislých objektov bez určenia ich konkrétnych tried. Ide o vzor vyššej úrovne, ktorý spája niekoľko továrenských metód na vytvorenie rôznych, ale súvisiacich objektov.

Hlavné rozdiely:

  • Zameranie: Fabrika metóda vytvára jeden produkt, Abstraktná továreň — rodinu produktov.
  • Štruktúra: Fabrika metóda sa zvyčajne implementuje cez dedičnosť a prepísanie metódy na vytvorenie, Abstraktná továreň cez kompozíciu a sadu rozhraní.
  • Použitie: Fabrika metóda je vhodná, keď je potrebné vytvárať objekty rovnakého typu s variáciami, Abstraktná továreň keď je potrebné vytvárať súvisiace objekty rôznych typov, ktoré musia spolupracovať.

Príklad v Dart (Flutter) pre fabriku metódu:

abstract class Button {
  void render();
}

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

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

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

Tu je Dialog fabrika metóda, ktorá vytvára rôzne tlačidlá v závislosti od platformy.

Abstraktná továreň bude zahŕňať tvorbu viacerých súvisiacich produktov, napríklad tlačidiel a zaškrtávacích políčok, ktoré musia byť kompatibilné medzi sebou.