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