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();
Бул мисал аркылуу абстракт фабрика байланыштуу объекттердин үй-бүлөлөрүн (баскычтар жана чекбокс) ар кандай платформалар үчүн түзүүгө мүмкүндүк берет, конкреттүү продукт класстарын билбестен.