Junior
Dajte primer korišćenja apstraktne fabrike
sobes.tech АИ
Одговор од АИ
Apstraktna fabrika je kreacioni obrazac koji pruža interfejs za kreiranje porodica povezanih objekata bez specificiranja njihovih konkretnih klasa.
Primer u C#:
// Interfejsi proizvoda
public interface IButton {
void Render();
}
public interface ICheckbox {
void Render();
}
// Konkreti proizvodi za Windows
public class WindowsButton : IButton {
public void Render() => Console.WriteLine("Renderovanje Windows dugmeta");
}
public class WindowsCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Renderovanje Windows checkbox-a");
}
// Konkreti proizvodi za MacOS
public class MacButton : IButton {
public void Render() => Console.WriteLine("Renderovanje MacOS dugmeta");
}
public class MacCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Renderovanje MacOS checkbox-a");
}
// Apstraktna fabrika
public interface IGUIFactory {
IButton CreateButton();
ICheckbox CreateCheckbox();
}
// Konkrete fabrike
public class WindowsFactory : IGUIFactory {
public IButton CreateButton() => new WindowsButton();
public ICheckbox CreateCheckbox() => new WindowsCheckbox();
}
public class MacFactory : IGUIFactory {
public IButton CreateButton() => new MacButton();
public ICheckbox CreateCheckbox() => new MacCheckbox();
}
// Upotreba
class Application {
private IButton button;
private ICheckbox checkbox;
public Application(IGUIFactory factory) {
button = factory.CreateButton();
checkbox = factory.CreateCheckbox();
}
public void Render() {
button.Render();
checkbox.Render();
}
}
// U klijentskom kodu biramo potrebnu fabriku
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();
U ovom primeru, apstraktna fabrika omogućava kreiranje porodica povezanih objekata (dugmića i checkboxova) za različite platforme, bez zavisnosti od konkretnih klasa proizvoda.