Sobes.tech
Middle

C#-ში 'მშენებელი' დიზაინის ნიმუშის განხორციელების მაგალითი მიაწოდეთ.

sobes.tech AI

პასუხი AI-სგან

Դիզայներային օրինակն առանձնացնում է բարդ օբյեկտի կառուցման գործընթացը նրա ներկայացումից այնպես, որ նույն կառուցման գործընթացը կարող է ստեղծել տարբեր ներկայացումներ։ Կիրառվում է, երբ օբյեկտի ստեղծումը պահանջում է բազմաթիվ քայլեր և կոնֆիգուրացիաներ։

// Աբստրակտ կառուցողը հայտարարում է ինտերֆեյս օբյեկտի մասերի ստեղծման համար։
public abstract class Builder
{
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract Product GetResult();
}

// Կոնկրետ կառուցողը իրականացնում է 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));
    }
}

// Դիրեկտորը կառուցում է օբյեկտը 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(); // Ստեղծում ենք կոնկրետ կառուցող

        director.Construct(builder); // Դիրեկտորը ղեկավարում է կառուցման գործընթացը

        Product result = builder.GetResult(); // Ստանում ենք պատրաստի արտադրանքը
        result.ListParts(); // Արտադրանքի մասերը ցուցադրում ենք
    }
}

Հիմնական բաղադրիչները՝

  • Builder: Աբստրակտ ինտերֆեյս վերջնական արտադրանքի մասերի ստեղծման համար։
  • ConcreteBuilder: Կոնկրետ իրականացման builder, որը կառուցում և հավաքում է արտադրանքի մասերը։
  • Director: Կլաս, որը օգտագործում է builder-ը քայլ առ քայլ կառուցելու համար, չիմանալով նրա կոնկրետ տեսակը։
  • Product: Բարդ օբյեկտ, որը կառուցվում է։

Այս օրինակն ցույց է տալիս, թե ինչպես Director օգտագործում է ConcreteBuilder՝ Product-ը քայլ առ քայլ ստեղծելու համար, բաժանելով կառուցման գործընթացը նրա ներկայացումից։