Giả sử tôi có một số classA
, có phương pháp riêng với các trường riêng tư của nó và bạn có những gì (tuân thủ cơ bản các tiêu chuẩn đóng gói). Sau đó, tôi có classB
, cần thiết để thực thi trạng thái cuối cùng (được lấy thông qua một trong các phương pháp của classA
, phần nào phá vỡ sự đóng gói) của classA
. Và sau đó chúng tôi có classC
, lại cần trạng thái cuối cùng là classB
. Và cứ tiếp tục như vậy, hãy nói với classM
. Đó có được coi là khớp nối quá cao hay không?Khớp nối quá cao hoặc được thiết kế như thế này?
Chỉnh sửa: Ok, giả sử tôi thiết kế hệ thống Loot, điều đó phụ thuộc vào việc sự sụt giảm xảy ra dựa trên kẻ thù bị đánh bại (mỗi kẻ thù có cơ hội thả khác nhau). Nếu kẻ thù bị đánh bại, lớp xử lý những thứ chiến đấu sẽ lăn một con xúc xắc, cho dù nó có rơi hay không, và sau đó tôi cần truyền bá trạng thái đó đến lớp khác để xử lý sự phân bố loot. Nếu có thả, lớp xử lý loot thực hiện cướp phát sinh và phân phối cho người chơi, nếu không, void.
Việc thực hiện cuối cùng sẽ là một cái gì đó như:
classA a = new classA;
... //classA does its stuff
classB b = new classB(a.getFinalState());
... // again class does its stuff based on outcome of A
classC c = new classC(b.getFinalState());
Và vân vân.
Tôi không hiểu vấn đề ở đây? Tại sao không chỉ truyền vào đối tượng a tới hàm tạo của đối tượng b? Nó có thể thẩm vấn nó thông qua các phương tiện bình thường để xác định trạng thái mà không phá vỡ đóng gói. Nếu bạn đang lo lắng về việc phơi bày quá nhiều, có thể thử sử dụng getters gói riêng tư hoặc cô lập các giao diện cho các mô-đun riêng của họ? Bạn đang đặt câu hỏi hay nhưng nghĩ quá khó. ;-) – jgitter