In Java e C #, è possibile creare un oggetto con proprietà che possono essere impostate all'inizializzazione definendo un costruttore con parametri, definendo ogni proprietà dopo la costruzione dell'oggetto o usando il modello di interfaccia generatore / fluido. Tuttavia, C # 3 ha introdotto inizializzatori di oggetti e raccolte, il che significava che il modello di builder era in gran parte inutile. In una lingua senza inizializzatori, è possibile implementare un builder quindi utilizzarlo in questo modo:
Vehicle v = new Vehicle.Builder()
.manufacturer("Toyota")
.model("Camry")
.year(1997)
.colour(CarColours.Red)
.addSpecialFeature(new Feature.CDPlayer())
.addSpecialFeature(new Feature.SeatWarmer(4))
.build();
Al contrario, in C # si potrebbe scrivere:
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 }
}
}
... eliminando la necessità di un builder come nell'esempio precedente.
Sulla base di questi esempi, i builder sono ancora utili in C # o sono stati sostituiti interamente dagli inizializzatori?