Không, mọi lớp không được có giao diện. Đó là quá mức cần thiết bình phương.
Bạn sử dụng giao diện khi bạn cần tóm tắt những gì được thực hiện từ cách thực hiện và bạn chắc chắn rằng việc triển khai có thể thay đổi.
Hãy xem API bộ sưu tập java.util để có ví dụ điển hình. Giao diện Danh sách là một sự trừu tượng tốt đẹp cho ý tưởng chung của một Danh sách, nhưng bạn có thể thấy rằng có nhiều cách để thực hiện nó: ArrayList, LinkedList, v.v.
CẬP NHẬT: Vậy trường hợp bạn thiết kế một bê tông là gì lớp học, quyết định sau khi bạn có khách hàng rằng một giao diện là cần thiết, và sau đó bạn phá vỡ khách hàng của bạn bằng cách thêm một giao diện? Yup, đó là những gì sẽ xảy ra. Làm thế nào bạn có thể biết những gì bạn không biết? Không có phần mềm hoặc phương pháp nào có thể khắc phục điều đó.
Tin tốt cho bạn là việc trích xuất một giao diện từ một lớp cụ thể là việc tái cấu trúc dễ dàng để thực hiện cho cả bạn và khách hàng của bạn. IDE thường xuyên xử lý những điều đó. Bạn và khách hàng của bạn nên tận dụng lợi thế của họ.
Tôi muốn nói rằng các lớp, như dịch vụ và sự kiên trì, phải luôn có giao diện. Bất cứ điều gì có thể được proxied nên có một giao diện. Nếu bạn đang làm Spring AOP, bất cứ điều gì mà bạn muốn trang trí với một khía cạnh nên có một giao diện.
Đối tượng mô hình hoặc giá trị, như Người hoặc Địa chỉ hoặc Điện thoại, không được có giao diện. Một đối tượng giá trị bất biến không nên có giao diện.
Phần còn lại rơi vào các khu vực màu xám. Sử dụng phán đoán tốt nhất của bạn.
Xem câu hỏi này: http://stackoverflow.com/questions/3036749/is -it-the-best-practice-to-extract-an-giao diện-cho-mọi-lớp –
Cảm ơn. Đó là những gì tôi đã được sau khi – Tarski