Java ve C # 'da, bir kurucuyu parametrelerle tanımlayarak, nesneyi oluşturduktan sonra her özelliği tanımlayarak veya oluşturucu / akışkan arabirimi desenini kullanarak başlatma sırasında ayarlanabilen özelliklere sahip bir nesne oluşturabilirsiniz. Bununla birlikte, C # 3, oluşturucu modelinin büyük ölçüde işe yaramadığı anlamına gelen nesne ve toplama başlatıcıları tanıttı. Başlatıcıları olmayan bir dilde, bir inşaatçı uygulanabilir ve daha sonra şu şekilde kullanılabilir:
Vehicle v = new Vehicle.Builder()
.manufacturer("Toyota")
.model("Camry")
.year(1997)
.colour(CarColours.Red)
.addSpecialFeature(new Feature.CDPlayer())
.addSpecialFeature(new Feature.SeatWarmer(4))
.build();
Tersine, C # 'da şunlar yazabilir:
var vehicle = new Vehicle {
Manufacturer = "Toyota",
Model = "Camry",
Year = 1997,
Colour = CarColours.Red,
SpecialFeatures = new List<SpecialFeature> {
new Feature.CDPlayer(),
new Feature.SeatWarmer { Seats = 4 }
}
}
... önceki örnekte görüldüğü gibi bir inşaatçı ihtiyacını ortadan kaldırır.
Bu örneklere dayanarak, geliştiriciler C # 'da hala yararlı mıdır, yoksa tamamen başlatıcılar tarafından değiştirilmiş mi?
are builders useful
neden bu tür soruları görmeye devam ediyorum? Bir Builder bir tasarım modelidir - elbette, bir dil özelliği olarak ortaya çıkabilir, ancak günün sonunda sadece bir tasarım deseni. Bir tasarım deseni "yanlış" olamaz . Kullanım durumunuzu yerine getirebilir veya etmeyebilir, ancak bu tüm kalıbı yanlış yapmaz, sadece uygulanmasıdır. Günün sonunda tasarım desenlerinin belirli sorunları çözdüğünü unutmayın - sorunla karşılaşmazsanız neden çözmeyi denesiniz?