Vậy tại sao tạo một lớp lồng nhau?
Tôi có thể nghĩ ra vài lý do quan trọng:
1. Kích hoạt đóng gói
Nhiều lần các lớp lồng nhau là chi tiết thực hiện của lớp. Người dùng của lớp chính không cần phải quan tâm đến sự tồn tại của họ. Bạn sẽ có thể thay đổi chúng theo ý muốn mà không yêu cầu người dùng của lớp chính thay đổi mã của họ.
2. Tránh ô nhiễm tên
Bạn không nên thêm các loại, biến, hàm, v.v. trong một phạm vi trừ khi chúng phù hợp trong phạm vi đó. Điều này khác hoàn toàn so với đóng gói. Có thể hữu ích để hiển thị giao diện của loại lồng nhau nhưng vị trí thích hợp cho loại lồng vẫn là lớp chính. Trong vùng đất C ++, các kiểu lặp là một ví dụ như vậy. Tôi không có kinh nghiệm về C # đủ để cung cấp cho bạn các ví dụ riêng biệt trong đó.
Chúng ta hãy tạo một ví dụ đơn giản để minh họa tại sao việc di chuyển một lớp lồng vào cùng phạm vi với lớp chính là ô nhiễm tên. Giả sử bạn đang thực hiện một lớp danh sách liên kết. Thông thường, bạn sẽ sử dụng
publid class LinkedList
{
class Node { ... }
// Use Node to implement the LinkedList class.
}
Nếu bạn quyết định chuyển Node
lên cùng phạm vi LinkedList
, bạn sẽ có
public class LinkedListNode
{
}
public class LinkedList
{
// Use LinkedListNode to implement the class
}
LinkedListNode
dường như không hữu ích nếu không có LinkedList
lớp học. Ngay cả khi LinkedList
được cung cấp một số chức năng truy xuất lại một LinkedListNode
đối tượng mà người dùng LinkedList
có thể sử dụng, nó vẫn LinkedListNode
chỉ hữu ích khi LinkedList
được sử dụng. Vì lý do đó, làm cho lớp "nút" trở thành lớp ngang hàng LinkedList
đang làm ô nhiễm phạm vi chứa.