Sobes.tech
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.