Middle
Oferiți un exemplu de implementare a pattern-ului de proiectare 'Builder' în C#.
sobes.tech AI
Răspuns de la AI
Modelul "Builder" separă procesul de construire a unui obiect complex de reprezentarea sa, astfel încât același proces de construire să poată crea diferite reprezentări. Se aplică atunci când crearea obiectului necesită multiple etape și configurații.
// Constructorul abstract declară interfața pentru crearea părților obiectului.
public abstract class Builder
{
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract Product GetResult();
}
// Constructorul concret implementează interfața Builder
// și construiește și asamblează părțile produsului.
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;
}
}
// Produsul reprezintă un obiect complex care trebuie construit.
public class Product
{
private List<string> _parts = new List<string>();
public void Add(string part)
{
_parts.Add(part);
}
public void ListParts()
{
Console.WriteLine("Părțile produsului: " + string.Join(", ", _parts));
}
}
// Directorul construiește obiectul folosind interfața Builder.
public class Director
{
public void Construct(Builder builder)
{
builder.BuildPartA();
builder.BuildPartB();
}
}
// Exemplu de utilizare
public class Program
{
public static void Main(string[] args)
{
Director director = new Director();
ConcreteBuilder builder = new ConcreteBuilder(); // Creăm un constructor concret
director.Construct(builder); // Directorul ghidează procesul de construcție
Product result = builder.GetResult(); // Obținem produsul final
result.ListParts(); // Afișăm părțile produsului
}
}
Componente principale:
- Builder: Interfață abstractă pentru crearea părților produsului final.
- ConcreteBuilder: Implementare concretă a Builder, care construiește și asamblează părțile produsului.
- Director: Clasă care folosește Builder pentru a construi pas cu pas obiectul, fără a cunoaște tipul său concret.
- Product: Obiect complex care este construit.
Acest exemplu demonstrează cum Director folosește ConcreteBuilder pentru a crea Product pas cu pas, separând procesul de construcție de reprezentarea sa.