Middle
C# dilinde 'İnşaatçı' tasarım deseninin uygulanmasına bir örnek veriniz.
sobes.tech yapay zeka
AI'dan gelen yanıt
"İnşaatçı" kalıbı, karmaşık bir nesnenin inşa edilme sürecini, onun temsilinden ayırır, böylece aynı inşa süreci farklı temsiller oluşturabilir. Bu, nesnenin oluşturulmasının çok sayıda adım ve yapılandırma gerektirdiği durumlarda kullanılır.
// Soyut inşaatçı, nesnenin parçalarını oluşturmak için arayüzü bildirir.
public abstract class Builder
{
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract Product GetResult();
}
// Somut inşaatçı, Builder arayüzünü uygular
// ve ürünün parçalarını inşa eder ve birleştirir.
public class ConcreteBuilder : Builder
{
private Product _product = new Product();
public override void BuildPartA()
{
_product.Add("PartA");
}
public override void BuildPartB()
{
_product.Add("PartB");
}
public override Product GetResult()
{
return _product;
}
}
// Ürün, inşa edilmesi gereken karmaşık bir nesneyi temsil eder.
public class Product
{
private List<string> _parts = new List<string>();
public void Add(string part)
{
_parts.Add(part);
}
public void ListParts()
{
Console.WriteLine("Ürün parçaları: " + string.Join(", ", _parts));
}
}
// Yönetici, Builder arayüzünü kullanarak nesneyi inşa eder.
public class Director
{
public void Construct(Builder builder)
{
builder.BuildPartA();
builder.BuildPartB();
}
}
// Kullanım örneği
public class Program
{
public static void Main(string[] args)
{
Director director = new Director();
ConcreteBuilder builder = new ConcreteBuilder(); // Somut inşaatçı oluşturulur
director.Construct(builder); // Yönetici inşa sürecini yönlendirir
Product result = builder.GetResult(); // Tamamlanmış ürün alınır
result.ListParts(); // Ürün parçaları gösterilir
}
}
Ana bileşenler:
- Builder: Son ürünün parçalarını oluşturmak için soyut arayüz.
- ConcreteBuilder: Ürünün parçalarını inşa eden ve birleştiren somut uygulama.
- Director: Nesneyi adım adım inşa etmek için Builder kullanan sınıf, onun somut türünü bilmeden.
- Product: İnşa edilen karmaşık nesne.
Bu örnek, Director'ün ConcreteBuilder kullanarak Product'u adım adım nasıl oluşturduğunu gösterir, inşa sürecini temsilinden ayırır.