Vysvětlete hlavní rozdíly mezi vzory 'Faktoriální metoda' a 'Abstraktní továrna'.
sobes.tech AI
Odpověď od AI
Vzor Fabrika Metoda (Factory Method) definuje rozhraní pro vytvoření objektu, ale umožňuje podtřídám rozhodnout, jakou třídu instancovat. Jinými slovy, tvorba konkrétního objektu je delegována podtřídám. Obvykle se používá, když existuje jeden produkt a několik variant jeho realizace.
Abstraktní továrna (Abstract Factory) poskytuje rozhraní pro tvorbu rodin souvisejících nebo závislých objektů bez určení jejich konkrétních tříd. Je to vzor vyšší úrovně, který spojuje několik metod továrny pro tvorbu různých, ale souvisejících objektů.
Hlavní rozdíly:
- Zaměření: Fabrika Metoda vytváří jeden produkt, Abstraktní továrna rodinu produktů.
- Struktura: Fabrika Metoda se obvykle implementuje dědičností a přepsáním metody tvorby, Abstraktní továrna přes kompozici a sadu rozhraní.
- Použití: Fabrika Metoda je vhodná, když je potřeba vytvářet objekty stejného typu s variacemi, Abstraktní továrna když je potřeba vytvářet související objekty různých typů, které musí spolupracovat.
Příklad v Dart (Flutter) pro fabriku metodu:
abstract class Button {
void render();
}
class AndroidButton implements Button {
@override
void render() => print('Android Tlačítko');
}
class IOSButton implements Button {
@override
void render() => print('iOS Tlačítko');
}
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();
}
Zde je Dialog tovární metoda, která vytváří různé tlačítka v závislosti na platformě.
Abstraktní továrna bude zahrnovat tvorbu více souvisejících produktů, například tlačítek a zaškrtávacích políček, které musí být vzájemně kompatibilní.