Sobes.tech
Middle

Builder tasarım deseni nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Builder tasarım deseni, karmaşık nesneleri adım adım oluşturmaya yöneliktir. Nesnenin inşası sürecini onun temsilinden ayırır, böylece aynı inşaat süreci kullanılarak farklı temsiller oluşturulabilir.

Ana bileşenler:

  • Builder: Nesnenin parçalarını oluşturmak için yöntemleri tanımlayan arayüz veya soyut sınıf.
  • ConcreteBuilder: Builder arayüzünün uygulaması, nesnenin parçalarını inşa eder ve birleştirir.
  • Director: Nesnenin oluşturulması için ConcreteBuilder metodlarının çağrı sırasını belirler. Opsiyonel bileşen.
  • Product: Builder deseni kullanılarak oluşturulan karmaşık nesne.

Avantajlar:

  • Karmaşık nesneleri adım adım oluşturmayı sağlar.
  • İnşaat süreci üzerinde daha iyi kontrol sağlar.
  • Nesnenin iç temsilini değiştirmeye olanak tanır.
  • Aynı nesnenin farklı varyasyonlarını oluşturmayı kolaylaştırır.

Örnek:

// Ürün
public class Car
{
    public string Engine { get; set; }
    public string Color { get; set; }
    public int Wheels { get; set; }

    public void Display()
    {
        Console.WriteLine($"Motor: {Engine}, Renk: {Color}, Tekerlekler: {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 = "Kı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();
    }
}

// Kullanım
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();
    }
}