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($"Մեքենա՝ շարժիչով: {Engine}, գույնով: {Color}, թափքներով: {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 = "Կարմիր";
    }

    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();
    }
}