Di Java dan C #, Anda bisa membuat objek dengan properti yang dapat diatur pada inisialisasi dengan mendefinisikan konstruktor dengan parameter, menentukan setiap properti setelah membangun objek, atau menggunakan pola antarmuka pembangun / fluida. Namun, C # 3 memperkenalkan inisialisasi objek dan koleksi, yang berarti pola pembangun sebagian besar tidak berguna. Dalam bahasa tanpa inisialisasi, seseorang dapat mengimplementasikan builder lalu menggunakannya seperti:
Vehicle v = new Vehicle.Builder()
.manufacturer("Toyota")
.model("Camry")
.year(1997)
.colour(CarColours.Red)
.addSpecialFeature(new Feature.CDPlayer())
.addSpecialFeature(new Feature.SeatWarmer(4))
.build();
Sebaliknya, dalam C # seseorang dapat menulis:
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 }
}
}
... menghilangkan kebutuhan akan pembangun seperti yang terlihat pada contoh sebelumnya.
Berdasarkan contoh-contoh ini, apakah pembangun masih berguna dalam C #, atau mereka telah digantikan seluruhnya oleh inisialisasi?
are builders useful
mengapa saya terus melihat pertanyaan-pertanyaan semacam ini? Builder adalah pola desain - tentu saja, itu dapat diekspos sebagai fitur bahasa tetapi pada akhirnya itu hanya pola desain. Pola desain tidak boleh "salah". Itu mungkin atau mungkin tidak memenuhi kasus penggunaan Anda tetapi itu tidak membuat seluruh pola salah, hanya penerapannya. Ingatlah bahwa pada akhirnya pola desain memecahkan masalah tertentu - jika Anda tidak menghadapi masalah, lalu mengapa Anda mencoba menyelesaikannya?