Theo RẮN, không chỉ bạn nên tạo giao diện, và không chỉ nên ở trong một tệp khác, nó phải ở trong một cụm khác.
Tại sao? Bởi vì bất kỳ thay đổi nào đối với tệp nguồn biên dịch thành tập hợp đều yêu cầu biên dịch lại tập hợp và bất kỳ thay đổi nào đối với tập hợp đều yêu cầu biên dịch lại bất kỳ tập hợp phụ thuộc nào. Vì vậy, nếu mục tiêu của bạn, dựa trên RẮN, là có thể thay thế triển khai A bằng triển khai B, trong khi lớp C phụ thuộc vào giao diện tôi không phải biết sự khác biệt, bạn phải đảm bảo lắp ráp với I trong đó không thay đổi, do đó bảo vệ tập quán.
"Nhưng nó chỉ là một biên dịch lại" Tôi nghe bạn phản đối. Cũng có thể, nhưng trong ứng dụng điện thoại thông minh của bạn, băng thông dữ liệu của người dùng sẽ dễ dàng hơn; tải xuống một nhị phân đã thay đổi, hoặc tải xuống nhị phân đó và năm mã khác có mã phụ thuộc vào nó? Không phải mọi chương trình được viết để được sử dụng bởi các máy tính để bàn trên mạng LAN. Ngay cả trong trường hợp đó, nơi băng thông và bộ nhớ rẻ, các bản phát hành bản vá nhỏ hơn có thể có giá trị vì chúng không đáng kể để đẩy ra toàn bộ mạng LAN thông qua Active Directory hoặc các lớp quản lý miền tương tự; Người dùng của bạn sẽ đợi chỉ vài giây để nó được áp dụng vào lần tiếp theo họ đăng nhập thay vì vài phút để toàn bộ nội dung được cài đặt lại. Chưa kể rằng, càng ít các hội đồng phải được biên dịch lại khi xây dựng một dự án, nó sẽ xây dựng càng nhanh,
Bây giờ, từ chối trách nhiệm: Điều này không phải lúc nào cũng có thể hoặc khả thi để làm. Cách dễ nhất để làm điều này là tạo một dự án "giao diện" tập trung. Điều này có nhược điểm riêng của nó; mã trở nên ít sử dụng lại vì dự án giao diện VÀ dự án triển khai phải được tham chiếu trong các ứng dụng khác sử dụng lại lớp kiên trì hoặc các thành phần chính khác trong ứng dụng của bạn. Bạn có thể khắc phục vấn đề đó bằng cách chia các giao diện thành các cụm được ghép chặt chẽ hơn, nhưng sau đó bạn có nhiều dự án hơn trong ứng dụng của mình, điều này khiến việc xây dựng đầy đủ trở nên rất đau đớn. Chìa khóa là sự cân bằng và duy trì thiết kế lỏng lẻo; bạn thường có thể di chuyển các tệp xung quanh khi cần thiết, vì vậy khi bạn thấy rằng một lớp sẽ cần nhiều thay đổi hoặc việc triển khai giao diện mới sẽ cần thường xuyên (có lẽ để giao tiếp với các phiên bản mới được hỗ trợ của phần mềm khác,