Sobes.tech
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();

Σε αυτό το παράδειγμα, η αφηρημένη κατασκευή επιτρέπει τη δημιουργία οικογενειών σχετικών αντικειμένων (κουμπιών και πλαισίων επιλογής) για διαφορετικές πλατφόρμες, χωρίς να εξαρτάται από τις συγκεκριμένες κλάσεις των προϊόντων.