ใน Java และ C # คุณสามารถสร้างวัตถุที่มีคุณสมบัติที่สามารถตั้งค่าได้ที่การเริ่มต้นโดยการกำหนดตัวสร้างด้วยพารามิเตอร์การกำหนดแต่ละคุณสมบัติหลังจากการสร้างวัตถุหรือการใช้รูปแบบส่วนต่อประสานการสร้าง / ของเหลว อย่างไรก็ตาม C # 3 แนะนำวัตถุเริ่มต้นและคอลเลกชันซึ่งหมายความว่ารูปแบบการสร้างไม่ได้ผลส่วนใหญ่ ในภาษาที่ไม่มีค่าเริ่มต้นเราสามารถใช้เครื่องมือสร้างจากนั้นใช้มันเพื่อ:
Vehicle v = new Vehicle.Builder()
.manufacturer("Toyota")
.model("Camry")
.year(1997)
.colour(CarColours.Red)
.addSpecialFeature(new Feature.CDPlayer())
.addSpecialFeature(new Feature.SeatWarmer(4))
.build();
ในทางกลับกันใน C # one สามารถเขียน:
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 }
}
}
... ไม่จำเป็นต้องมีผู้สร้างตามที่เห็นในตัวอย่างก่อนหน้านี้
จากตัวอย่างเหล่านี้ผู้สร้างยังคงมีประโยชน์ใน C # หรือถูกแทนที่โดยผู้เริ่มต้นทั้งหมดหรือไม่
are builders useful
เหตุใดฉันจึงเห็นคำถามประเภทเหล่านี้อยู่เรื่อย ๆ ตัวสร้างเป็นรูปแบบการออกแบบ - แน่นอนว่ามันอาจถูกเปิดเผยว่าเป็นคุณสมบัติทางภาษา แต่ในตอนท้ายของวันนั้นเป็นเพียงรูปแบบการออกแบบ รูปแบบการออกแบบไม่สามารถ "ผิด" มันอาจหรืออาจจะไม่เติมเต็มกรณีการใช้งานของคุณ แต่นั่นก็ไม่ได้ทำให้รูปแบบทั้งหมดผิด แต่เป็นการใช้งานของมัน โปรดจำไว้ว่าในตอนท้ายของรูปแบบการออกแบบในแต่ละวันจะแก้ปัญหาเฉพาะ - ถ้าคุณไม่ประสบปัญหาแล้วทำไมคุณต้องลองแก้ปัญหาด้วย?