2013-05-29 32 views
6

tôi sử dụng mô hình khá nhiều:Java constructors mẫu

class Blah 
    int a; 
    double b; 
    String c; 
    Date d; 

    public Blah(int a, double b, String c, Date d) { 
     super(); // possibly 
     this.a = a; 
     this.b = b; 
     this.c = c; 
     this.d = d; 
    } 

này thực sự là rất nhiều soạn sẵn cho một cái gì đó đơn giản như vậy. Tôi đã suy nghĩ của một nhà máy đối tượng chung để làm điều này với nội tâm, nhưng điều này cảm thấy rất ác (trường hợp đặc biệt, thừa kế, và các vấn đề tốc độ). Guice có thể được sử dụng và các nhà xây dựng bỏ qua hoàn toàn, nhưng sau đó tạo đối tượng thủ công sẽ là xấu xí.

Đây có phải là điều tôi sẽ phải sống với Java hoặc có cách nào để tránh bản mẫu này không?

+0

tôi không hoàn toàn rõ ràng câu hỏi của bạn là gì. – lichengwu

+2

Đó là rất nhiều mã boilerplate thực sự, nhưng sau đó một lần nữa, Eclipse chỉ có thể tạo ra điều này trong chớp mắt :) –

+2

Vâng, chúng ta sống với loại boilerplate này trong Java. –

Trả lời

5

Hãy thử sử dụng Lombok (http://projectlombok.org/)

Bạn có thể tạo ra thu khí, setters và nhà thầu với đơn thuần chú thích.

+0

Demo là ấn tượng, nhưng tôi chỉ chờ đợi để tìm hiểu về tất cả những cạm bẫy :) –

+4

Tôi đã luôn luôn tự hỏi, điểm của việc sử dụng getters và setters cho các thành viên riêng là gì nếu bạn đang làm hoàn toàn không có xác minh? Tại sao không chỉ có các thành viên công cộng (thậm chí nhiều hơn như vậy khi các lĩnh vực là cuối cùng là tốt)? Tôi nhận được rằng bạn đang tách thực hiện từ giao diện, nhưng nếu các setters và getters được trực tiếp liên kết với các tên biến thành viên, sau đó kinda đó đánh bại mục đích, không? – Supericy

+2

@Supericy Hoàn toàn đồng ý với điều đó. Tôi đã ủng hộ vị trí đó nhiều lần trong một câu trả lời SO, thường kết thúc bằng số phiếu âm. Lập luận của họ: tất cả các tiêu chuẩn về "xác nhận" không bao giờ xảy ra trong thực tế, các lớp con "ghi đè" một setter, v.v. –

Các vấn đề liên quan