เป็นความคิดที่ดีหรือไม่ดีที่จะทำให้ setters ใน java คืนค่า "this" หรือไม่?
public Employee setName(String name){
this.name = name;
return this;
}
รูปแบบนี้มีประโยชน์เพราะจากนั้นคุณสามารถโยงผู้ตั้งค่าเช่นนี้:
list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));
แทนสิ่งนี้:
Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);
... แต่มันขัดแย้งกับการประชุมมาตรฐาน ฉันคิดว่ามันอาจจะคุ้มค่าเพียงเพราะมันทำให้สุนัขตัวนั้นทำสิ่งอื่นที่มีประโยชน์ ฉันเคยเห็นรูปแบบนี้ใช้สถานที่บางแห่ง (เช่น JMock, JPA) แต่ดูเหมือนว่าผิดปกติและใช้โดยทั่วไปสำหรับ API ที่กำหนดไว้อย่างดีเท่านั้นซึ่งรูปแบบนี้มีการใช้ทุกที่
ปรับปรุง:
สิ่งที่ฉันอธิบายไว้นั้นถูกต้อง แต่สิ่งที่ฉันกำลังมองหาจริงๆคือความคิดบางอย่างว่านี่เป็นสิ่งที่ยอมรับได้หรือไม่และหากมีข้อผิดพลาดหรือวิธีปฏิบัติที่ดีที่สุดที่เกี่ยวข้อง ฉันรู้เกี่ยวกับรูปแบบของตัวสร้าง แต่มีส่วนเกี่ยวข้องกับสิ่งที่ฉันกำลังอธิบายอยู่เล็กน้อยเนื่องจาก Josh Bloch อธิบายว่ามีคลาสตัวสร้างสแตติกที่เชื่อมโยงสำหรับการสร้างวัตถุ
this
หากวิธีการที่ไม่จำเป็นอย่างชัดเจนที่จะกลับสิ่งที่จะทำในงานของตนตอนนี้ก็ผลตอบแทน บางครั้งฉันก็เปลี่ยนฟังก์ชั่นเพื่อที่แทนที่จะส่งกลับค่ามันทำงานกับสมาชิกของวัตถุเพียงเพื่อให้ฉันสามารถทำได้ มันวิเศษมาก :)