Junior
Дайте пример за използване на абстрактна фабрика
sobes.tech AI
Отговор от AI
Абстрактната фабрика е създаващ шаблон, който предоставя интерфейс за създаване на семейства от свързани обекти без да указва техните конкретни класове.
Пример на C#:
// Интерфейси на продуктите
public interface IButton {
void Render();
}
public interface ICheckbox {
void Render();
}
// Конкретни продукти за Windows
public class WindowsButton : IButton {
public void Render() => Console.WriteLine("Рендиране на бутон Windows");
}
public class WindowsCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Рендиране на отметка Windows");
}
// Конкретни продукти за MacOS
public class MacButton : IButton {
public void Render() => Console.WriteLine("Рендиране на бутон MacOS");
}
public class MacCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Рендиране на отметка MacOS");
}
// Абстрактна фабрика
public interface IGUIFactory {
IButton CreateButton();
ICheckbox CreateCheckbox();
}
// Конкретни фабрики
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();
}
// Използване
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();
}
}
// В клиентския код избираме необходимата фабрика
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();
В този пример, абстрактната фабрика позволява създаването на семейства от свързани обекти (бутон и отметка) за различни платформи, без да зависи от конкретните класове на продуктите.