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 βήμα προς βήμα, διαχωρίζοντας τη διαδικασία κατασκευής από την αναπαράστασή του.