Nó là một ý tưởng tốt hay xấu để làm cho setters trong java trả lại "cái này"?
public Employee setName(String name){
this.name = name;
return this;
}
Mẫu này có thể hữu ích vì sau đó bạn có thể xâu chuỗi setters như thế này:
list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));
thay vì điều này:
Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);
... nhưng nó đi ngược lại quy ước tiêu chuẩn. Tôi cho rằng nó có thể đáng giá chỉ vì nó có thể khiến setter đó làm một cái gì đó hữu ích khác. Tôi đã thấy mẫu này được sử dụng ở một số nơi (ví dụ: JMock, JPA), nhưng có vẻ không phổ biến và thường chỉ được sử dụng cho các API được xác định rất rõ trong đó mẫu này được sử dụng ở mọi nơi.
Cập nhật:
Những gì tôi đã mô tả rõ ràng là hợp lệ, nhưng những gì tôi thực sự tìm kiếm là một số suy nghĩ về việc liệu điều này thường được chấp nhận, và nếu có bất kỳ cạm bẫy hoặc thực tiễn tốt nhất liên quan. Tôi biết về mẫu Builder nhưng nó liên quan nhiều hơn một chút sau đó là những gì tôi đang mô tả - như Josh Bloch mô tả nó có một lớp Builder tĩnh liên quan để tạo đối tượng.
this
. Đôi khi, tôi thậm chí còn thay đổi hàm để thay vì trả về một giá trị, nó hoạt động trên một thành viên của đối tượng, để tôi có thể làm điều này. Rất tuyệt vời. :)