2012-03-16 27 views
6

Trong ứng dụng Swing, cách tốt nhất để gửi dữ liệu (tương tác) giữa hai chế độ xem là gì?Swing - Cách tốt nhất để tương tác giữa các chế độ xem?

Nhìn vào phiên khớp nối trong Study Guide to the SCJP 6, nó nói:

ứng dụng OO Tất cả nontrivial là một sự pha trộn của nhiều lớp học và giao diện làm việc cùng nhau. Lý tưởng nhất, tất cả các tương tác giữa các đối tượng trong một hệ thống OO nên sử dụng các API, nói cách khác, các hợp đồng, của các lớp tương ứng của các đối tượng.

Nếu tôi hiểu chính xác, cách tốt hơn là tạo giao diện (hợp đồng) cho mỗi chế độ xem và nếu cần sử dụng phương thức giao diện này để truy xuất dữ liệu. Đây có phải là cách tốt không? Chi tiêu một thời gian tốt tạo ra rất nhiều giao diện để nói những gì được tiếp xúc bởi một cái nhìn là ok?

Một cách khác mà tôi nghĩ là phải có các lớp để giữ dữ liệu (Kiểu) của chế độ xem. Trong trường hợp này, cách tiếp cận tốt là trực tiếp các lớp mô hình này?

Xin cảm ơn trước.

Trả lời

6

Khái niệm về separable model tràn ngập Swing, như được nêu trong A Swing Architecture Overview. Thông thường, mỗi mô hình được đại diện bởi một giao diện; một số bao gồm một số AbstractXxxModel với một số ống nước sự kiện cơ bản; và nhiều người có DefaultXxxModel với việc triển khai chuẩn.

+0

Dường như bạn có mọi ví dụ cho mọi tình huống :-) –

3

Nó hoàn toàn phụ thuộc vào lựa chọn thiết kế bạn đang thực hiện. Có những lúc mà sự lựa chọn thiết kế chúng tôi sẽ đề xuất là tốt hơn cho việc chia sẻ dữ liệu của View nhưng nó phá hủy khía cạnh khác của phần mềm của bạn. Vì vậy, để cân bằng bạn đã thực hiện lựa chọn thiết kế để làm cho ứng dụng của bạn chạy trơn tru.

Cá nhân tôi thích mẫu thiết kế MVC. Nó hoạt động cho tôi mỗi lần! đọc thêm về MVC trên:

Model View Controller

Chúc may mắn! Lưu ý: Trong MVC hai quan điểm không bao giờ tương tác với nhau mà là sử dụng bộ điều khiển để lấy dữ liệu từ mô hình và về cơ bản mỗi khung nhìn có bộ điều khiển với tham chiếu đến mô hình dữ liệu của nó.

+0

+1 cho MVC; đây là [ví dụ] có liên quan (http://stackoverflow.com/a/3072979/230513). – trashgod

+0

@trashgod cảm ơn ví dụ! –

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