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();
Σε αυτό το παράδειγμα, η αφηρημένη κατασκευή επιτρέπει τη δημιουργία οικογενειών σχετικών αντικειμένων (κουμπιών και πλαισίων επιλογής) για διαφορετικές πλατφόρμες, χωρίς να εξαρτάται από τις συγκεκριμένες κλάσεις των προϊόντων.