Middle
Builder dizayn nümunəsi nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Builder dizayn şablonu mürəkkəb obyektləri mərhələli şəkildə yaratmaq üçün nəzərdə tutulmuşdur. O, obyektin qurulma prosesini onun təqdimatından ayırır və eyni qurulma prosesindən istifadə etməklə müxtəlif təqdimatlar yaratmağa imkan verir.
Əsas komponentlər:
- Builder: Obyektin hissələrini yaratmaq üçün metodları müəyyən edən interfeys və ya abstrakt sinif.
- ConcreteBuilder: Builder interfeysinin tətbiqi, obyektin hissələrini qurur və yığır.
- Director: ConcreteBuilder-in metodlarının çağırış ardıcıllığını müəyyən edir və obyektin yaradılmasını təmin edir. İstəyə bağlı komponent.
- Product: Builder şablonundan istifadə etməklə yaradılan mürəkkəb obyekt.
Üstünlüklər:
- Mürəkkəb obyektləri mərhələli şəkildə yaratmağa imkan verir.
- Quruluş prosesinə daha yaxşı nəzarət təmin edir.
- Obyektin daxili təqdimatını dəyişməyə imkan verir.
- Eyni obyektin müxtəlif variantlarının yaradılmasını asanlaşdırır.
Nümunə:
// Məhsul
public class Car
{
public string Engine { get; set; }
public string Color { get; set; }
public int Wheels { get; set; }
public void Display()
{
Console.WriteLine($"Maşın ilə mühərrik: {Engine}, Rəng: {Color}, Təkərlər: {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 = "Qırmızı";
}
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();
}
}
// İstifadə
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();
}
}