Junior
Adj példát az absztrakt gyár használatára
sobes.tech MI
Válasz az MI-től
Az absztrakt gyár egy olyan tervezési minta, amely interfészt biztosít kapcsolódó objektumcsaládok létrehozásához anélkül, hogy meghatároznánk azok konkrét osztályait.
Példa C#-ban:
// Termék interfészek
public interface IButton {
void Render();
}
public interface ICheckbox {
void Render();
}
// Konkrét termékek Windows-hoz
public class WindowsButton : IButton {
public void Render() => Console.WriteLine("Windows gomb renderelése");
}
public class WindowsCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Windows jelölőnégyzet renderelése");
}
// Konkrét termékek MacOS-hez
public class MacButton : IButton {
public void Render() => Console.WriteLine("MacOS gomb renderelése");
}
public class MacCheckbox : ICheckbox {
public void Render() => Console.WriteLine("MacOS jelölőnégyzet renderelése");
}
// Absztrakt gyár
public interface IGUIFactory {
IButton CreateButton();
ICheckbox CreateCheckbox();
}
// Konkrét gyárak
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();
}
// Használat
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();
}
}
// A klienskódban kiválasztjuk a szükséges gyárat
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();
Ebben a példában az absztrakt gyár lehetővé teszi kapcsolódó objektumcsaládok (gombok és jelölőnégyzetek) létrehozását különböző platformokra, anélkül, hogy függene a termékek konkrét osztályaitól.