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();
Дар ин мисол, фабрикаи абстрактӣ имкон медиҳад, ки оилаҳои объектҳои вобаста (тугмаҳо ва чекбоксҳо) барои платформаҳои гуногун эҷод карда шаванд, бе вобастагӣ аз синфҳои мушаххаси маҳсулот.