Sobes.tech
Middle

რა არის Builder დიზაინის ნიმუში?

sobes.tech AI

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

დიზაინპატერნი Builder განკუთვნილია რთული ობიექტების ეტაპობრივად შექმნისთვის. იგი გამოყოფს ობიექტის კონსტრუქციის პროცესს მისი წარმოდგენიდან, რაც საშუალებას აძლევს ერთსა და იმავე კონსტრუქციის პროცესის გამოყენებას სხვადასხვა წარმოდგენებისთვის.

ძირითადი კომპონენტები:

  • Builder: ინტერფეისი ან აბსტრაქტული კლასი, რომელიც განსაზღვრავს მეთოდებს ობიექტის ნაწილების შესაქმნელად.
  • ConcreteBuilder: Builder ინტერფეისის განხორციელება, რომელიც კონსტრუქტირებს და აგროვებს ობიექტის ნაწილებს.
  • Director: განსაზღვრავს ConcreteBuilder მეთოდების გამოძახების წესს ობიექტის შესაქმნელად. აირჩიე კომპონენტი.
  • Product: რთული ობიექტი, რომელიც შეიქმნა Builder-ის გამოყენებით.

უპირატესობები:

  • საშუალებას აძლევს ეტაპობრივად შექმნას რთული ობიექტები.
  • უზრუნველყოფს უკეთეს კონტროლს ობიექტის მშენებლობის პროცესზე.
  • საშუალებას აძლევს შეცვალოს ობიექტის შიდა წარმოდგენა.
  • ამარტივებს ერთიდაიგივე ობიექტის სხვადასხვა ვარიანტების შექმნას.

მაგალითი:

// Product
public class Car
{
    public string Engine { get; set; }
    public string Color { get; set; }
    public int Wheels { get; set; }

    public void Display()
    {
        Console.WriteLine($"მანქანა with Engine: {Engine}, Color: {Color}, Wheels: {Wheels}");
    }
}

// Builder
public interface ICarBuilder
{
    void BuildEngine();
    void BuildColor();
    void BuildWheels();
    Car GetResult();
}

// ConcreteBuilder
public class SportsCarBuilder : ICarBuilder
{
    private Car _car = new Car();

    public void BuildEngine()
    {
        _car.Engine = "V8";
    }

    public void BuildColor()
    {
        _car.Color = "Red";
    }

    public void BuildWheels()
    {
        _car.Wheels = 4;
    }

    public Car GetResult()
    {
        return _car;
    }
}

// Director
public class CarDirector
{
    private ICarBuilder _builder;

    public CarDirector(ICarBuilder builder)
    {
        _builder = builder;
    }

    public void Construct()
    {
        _builder.BuildEngine();
        _builder.BuildColor();
        _builder.BuildWheels();
    }
}

// გამოყენება
public class Program
{
    public static void Main(string[] args)
    {
        ICarBuilder builder = new SportsCarBuilder();
        CarDirector director = new CarDirector(builder);

        director.Construct();
        Car sportsCar = builder.GetResult();
        sportsCar.Display();
    }
}