Објасните главне разлике између образаца 'Фабрички метод' и 'Апстрактна фабрика'.
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.