2015-10-13 11 views
5

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.

+0

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

Trả lời

1

Edit: bạn có thể đạt được những gì bạn muốn bằng cách làm theo một Delegation Pattern và anh chị em của nó gần Decorator Pattern

Builder Pattern, như đã đề cập, là một lựa chọn hợp lệ. Nó luôn luôn phụ thuộc vào những gì thiết kế ban đầu của bạn nhằm mục đích.

+0

Tệ của tôi, tôi thực sự đã chỉnh sửa bài đăng gốc của mình để đưa vấn đề hiện tại vào câu hỏi –

2

Yea. Có khớp nối chặt chẽ với cấp 2. Đó là cao tránh được và coi là thực hành xấu làm giảm tính linh hoạt và tái sử dụng mã. Và thử nghiệm là một con ngựa đêm.

Nếu họ có các thuộc tính có liên quan đến nhau, hãy cân nhắc xem Builder Pattern.

Builder pattern là để tìm một giải pháp cho các nhà xây dựng lồng chống mẫu

Đó constructor chống mẫu là những gì bạn có trước đến nay.

Các vấn đề liên quan