Junior
Sniedz piemēru par abstraktās rūpnīcas izmantošanu
sobes.tech AI
Atbilde no AI
Abstraktā fabrika — tas ir izstrādes raksts, kas nodrošina saskarni, lai izveidotu saistītu objektu ģimenes, neuzrādot to konkrētas klases:
Piemērs C#:
// Produktu saskarnes
public interface IButton {
void Render();
}
public interface ICheckbox {
void Render();
}
// Konkrēti Windows produkti
public class WindowsButton : IButton {
public void Render() => Console.WriteLine("Windows pogas attēlojums");
}
public class WindowsCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Windows izvēles rūtiņas attēlojums");
}
// Konkrēti MacOS produkti
public class MacButton : IButton {
public void Render() => Console.WriteLine("MacOS pogas attēlojums");
}
public class MacCheckbox : ICheckbox {
public void Render() => Console.WriteLine("MacOS izvēles rūtiņas attēlojums");
}
// Abstrakta fabrika
public interface IGUIFactory {
IButton CreateButton();
ICheckbox CreateCheckbox();
}
// Konkrētas fabrikas
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();
}
// Izmantošana
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();
}
}
// Lietotāja kods izvēlas vajadzīgo fabriku
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();
Šajā piemērā abstraktā fabrika ļauj izveidot saistītu objektu ģimenes (pogas un izvēles rūtiņas) dažādām platformām, nezinot konkrēto produktu klases.