Sobes.tech
Middle

Παραθέστε ένα παράδειγμα υλοποίησης του μοτίβου σχεδίασης 'Κατασκευαστής' σε C#.

sobes.tech AI

Απάντηση από AI

Το μοτίβο "Builder" διαχωρίζει τη διαδικασία κατασκευής ενός πολύπλοκου αντικειμένου από την αναπαράστασή του, έτσι ώστε η ίδια διαδικασία κατασκευής να μπορεί να δημιουργεί διαφορετικές αναπαραστάσεις. Εφαρμόζεται όταν η δημιουργία του αντικειμένου απαιτεί πολλά βήματα και διαμορφώσεις.

// Ο αφηρημένος builder δηλώνει το interface για τη δημιουργία μερών του αντικειμένου.
public abstract class Builder
{
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract Product GetResult();
}

// Ο συγκεκριμένος builder υλοποιεί το interface Builder
// και κατασκευάζει και συναρμολογεί τα μέρη του προϊόντος.
public class ConcreteBuilder : Builder
{
    private Product _product = new Product();

    public override void BuildPartA()
    {
        _product.Add("PartA");
    }

    public override void BuildPartB()
    {
        _product.Add("PartB");
    }

    public override Product GetResult()
    {
        return _product;
    }
}

// Το προϊόν αντιπροσωπεύει ένα πολύπλοκο αντικείμενο που πρέπει να κατασκευαστεί.
public class Product
{
    private List<string> _parts = new List<string>();

    public void Add(string part)
    {
        _parts.Add(part);
    }

    public void ListParts()
    {
        Console.WriteLine("Μέρη του προϊόντος: " + string.Join(", ", _parts));
    }
}

// Ο διευθυντής κατασκευάζει το αντικείμενο χρησιμοποιώντας το interface Builder.
public class Director
{
    public void Construct(Builder builder)
    {
        builder.BuildPartA();
        builder.BuildPartB();
    }
}

// Παράδειγμα χρήσης
public class Program
{
    public static void Main(string[] args)
    {
        Director director = new Director();
        ConcreteBuilder builder = new ConcreteBuilder(); // Δημιουργία συγκεκριμένου builder

        director.Construct(builder); // Ο διευθυντής καθοδηγεί τη διαδικασία κατασκευής

        Product result = builder.GetResult(); // Λήψη του ολοκληρωμένου προϊόντος
        result.ListParts(); // Εμφάνιση των μερών του προϊόντος
    }
}

Βασικά στοιχεία:

  • Builder: Αφηρημένο interface για τη δημιουργία μερών του τελικού προϊόντος.
  • ConcreteBuilder: Συγκεκριμένη υλοποίηση του Builder, που κατασκευάζει και συναρμολογεί τα μέρη του προϊόντος.
  • Director: Κλάση που χρησιμοποιεί τον Builder για να κατασκευάσει βήμα προς βήμα το αντικείμενο, χωρίς να γνωρίζει τον συγκεκριμένο τύπο του.
  • Product: Το πολύπλοκο αντικείμενο που κατασκευάζεται.

Αυτό το παράδειγμα δείχνει πώς ο Director χρησιμοποιεί τον ConcreteBuilder για να δημιουργήσει το Product βήμα προς βήμα, διαχωρίζοντας τη διαδικασία κατασκευής από την αναπαράστασή του.