Middle
Builder dizayn shabloni nima?
sobes.tech AI
AIdan javob
Builder dizayn shabloni murakkab ob'ektlarni bosqichma-bosqich yaratish uchun mo'ljallangan. U ob'ektni qurish jarayonini uning tasviridan ajratadi, shuning uchun bir xil qurilish jarayonidan foydalanib, turli xil tasvirlar yaratish mumkin.
Asosiy komponentlar:
- Builder: Ob'ektning qismlarini yaratish uchun metodlarni belgilovchi interfeys yoki abstrakt sinf.
- ConcreteBuilder: Builder interfeysining amalga oshirilishi, ob'ekt qismlarini quradi va yig'adi.
- Director: ConcreteBuilder metodlarini chaqirish tartibini belgilaydi, ob'ektni yaratish uchun. Ixtiyoriy komponent.
- Product: Builder shabloni yordamida yaratiladigan murakkab ob'ekt.
Afzalliklar:
- Murakkab ob'ektlarni bosqichma-bosqich yaratishga imkon beradi.
- Qurilish jarayonini yaxshiroq nazorat qilish imkonini beradi.
- Ob'ektning ichki tasvirini o'zgartirish imkonini beradi.
- Bir xil ob'ektning turli variantlarini yaratishni osonlashtiradi.
Misol:
// Mahsulot
public class Car
{
public string Engine { get; set; }
public string Color { get; set; }
public int Wheels { get; set; }
public void Display()
{
Console.WriteLine($"Moshina bilan dvigatel: {Engine}, Rangi: {Color}, Rul: {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 = "Qizil";
}
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();
}
}
// Foydalanish
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();
}
}