Có một số khía cạnh để xem xét trong một thiết kế như vậy:
- các phụ thuộc cấu trúc
- mối quan hệ sở hữu (iecro so với các loại khác của PGS)
- nhu cầu điều hướng
Kết cấu phụ thuộc giữa các lớp:
Nếu bạn nhắm đến việc tái sử dụng các lớp thành phần, bạn nên tránh sự phụ thuộc không cần thiết và tránh các cấu trúc vòng tròn khép kín như vậy.
Tuy nhiên, đôi khi hai lớp được liên kết mạnh mẽ về mặt khái niệm. Trong trường hợp này, tránh phụ thuộc không phải là một lựa chọn thực sự. Ví dụ: một cây và các lá của nó, hay nói chung là một hỗn hợp và các thành phần của nó .
Quyền sở hữu đối tượng:
Có một đối tượng sở hữu đối tượng khác? Hay nói cách khác: nếu một đối tượng bị phá hủy, thì đối tượng kia cũng sẽ bị phá hủy?
Chủ đề này đã được Snowman giải quyết chuyên sâu, vì vậy tôi sẽ không đề cập đến vấn đề này ở đây.
Nhu cầu điều hướng giữa các đối tượng:
Một vấn đề cuối cùng là điều hướng cần. Hãy lấy ví dụ yêu thích của tôi, mẫu thiết kế tổng hợp của Gang of bốn .
Gamma & al. đề cập một cách rõ ràng về nhu cầu tiềm năng cần có một tham chiếu cha mẹ rõ ràng: " Duy trì tham chiếu từ các thành phần con đến cha mẹ của chúng có thể đơn giản hóa việc truyền tải và quản lý cấu trúc hỗn hợp " có thể làm chậm đáng kể các hoạt động và theo cách hàm mũ. Một tài liệu tham khảo trực tiếp, thậm chí thông tư có thể dễ dàng thao tác các vật liệu tổng hợp của bạn.
Một ví dụ có thể là một mô hình đồ họa của một hệ thống điện tử. Một cấu trúc tổng hợp có thể đại diện cho các bảng điện tử, mạch, các yếu tố. Để hiển thị và thao tác mô hình, bạn cần một số proxy hình học trong chế độ xem GUI. Sau đó, chắc chắn việc điều hướng từ phần tử GUI được người dùng chọn đến thành phần này dễ dàng hơn nhiều, để tìm ra phần tử nào là cha mẹ và các phần tử anh chị em có liên quan, hơn là bắt đầu tìm kiếm từ trên xuống.
Tất nhiên, như Gamma & al đã chỉ ra, bạn phải đảm bảo sự bất biến của mối quan hệ vòng tròn. Điều này có thể khó, như câu hỏi SO mà bạn đề cập đã chỉ ra. Nhưng nó hoàn toàn có thể quản lý và một cách an toàn.
Phần kết luận
Nhu cầu điều hướng sẽ không được đánh giá thấp. Không phải vô cớ mà UML rõ ràng đã nhấn mạnh nó trong ký hiệu mô hình hóa. Và vâng, có những tình huống hoàn toàn hợp lệ trong đó cần tham khảo thông tư.
Điểm duy nhất là đôi khi mọi người có xu hướng đi vào một hướng như vậy để nhanh chóng. Vì vậy, đáng để xem xét tất cả 3 khía cạnh liên quan trước khi đưa ra quyết định có quyết định hay không.