Tôi đã đọc nhiều ấn bản về MVC, nhưng tôi vẫn chưa thể hiểu rõ tại sao chúng ta cần "bộ điều khiển".MVC: tại sao chúng ta cần "điều khiển", hoặc khi nào chúng ta nên sử dụng mẫu này?
Tôi thường viết các ứng dụng trong client-server mô hình:
máy chủ chứa tất cả các doanh nghiệp logic, và nó biết gì về gui. Nó thực hiện công việc chính, và nó càng di động càng tốt.
khách hàng là GUI, nó liên kết với máy chủ, tương tác với người dùng, gửi lệnh từ người dùng đến máy chủ .
Tôi thích kiến trúc này, và tôi không thể hiểu tại sao người ta thực sự cần thêm một trung gian giữa client và máy chủ, mà dường như là khiển?
UPD: ví dụ đơn giản: giả sử chúng ta cần viết một số trình ghi dữ liệu. Dữ liệu đến từ cổng COM, nó được mã hóa bởi một số giao thức. Cần hiển thị các tin nhắn đã nhận trong cửa sổ nhật ký đơn giản.
Làm thế nào tôi có thể làm cho nó:
máy chủ chứa các mục sau đây:
Data_receiver
: thực sự nhận được dữ liệu thô từ cổng COM, nhưng đó là giao diện, vì vậy chúng tôi có thể làm cho một số một lớp khác nhận dữ liệu từ bất kỳ nguồn nào khác;Data_decoder
: lấy dữ liệu thô và trả về các thư được giải mã kết quả, đó là giao diện, vì vậy chúng tôi có thể thay đổi giao thức mã hóa dễ dàng;Data_core
: sử dụng các phiên bảnData_receiver
vàData_decoder
, phát ra tín hiệu cho khách hàng.
client chứa các mục sau đây:
- Appl lõi: tạo ra thể hiện của
Data_receiver
(một trong những kết nối với cổng COM),Data_decoder
vàData_core
(mất tài liệu tham khảo đểData_receiver
vàData_decoder
trường hợp) , cũng tạo GUI cửa sổ nhật ký đơn giản (có tham chiếu đếnData_core
); - GUI cửa sổ nhật ký đơn giản: liên kết với
Data_core
, tức là lắng nghe tín hiệu phát ra và hiển thị dữ liệu đã nhận.
Như tôi hiểu những gì tôi đã đọc về MVC, GUI nên không thực sự mất tin nhắn đã nhận từ Data_core
, vì khiển nên làm điều đó và sau đó truyền dữ liệu cho GUI. Nhưng điều gì sẽ xảy ra nếu GUI lấy dữ liệu này trực tiếp từ mô hình ?
Tôi thích câu hỏi này, đơn giản vì không ai trả lời "bạn đang làm sai". Điều đó có nghĩa là cộng đồng nói chung hoặc không biết câu trả lời cho câu hỏi này (không chắc), hoặc MVC và MVVM đã bị quá tải đến mức mà những người như bản thân nghĩ rằng họ là * bắt buộc *, khi, trên thực tế, đôi khi họ có thể nhận được theo cách này, và lấy đi khả năng đọc mã. –
Ngoài ra, các mẫu như MVVM và MVC là * mẫu *. Điều đó có nghĩa là chúng * xuất hiện * trong mã của bạn khi bạn đang viết mã RẮN. Nói cách khác, nếu bạn đang viết mã RẮN, và các mẫu không xuất hiện, bạn có thể viết mã mà không cần các mẫu này. –
Hơn nữa, trong ví dụ của bạn, cả khách hàng và máy chủ của bạn đều có mã điều khiển. Ví dụ: trường văn bản chỉ là trường văn bản. Logic xác thực được áp dụng cho trường văn bản đó là * mã điều khiển *. Nếu bạn không thấy mình lặp lại logic xác nhận đó, có thể bạn đang viết mã theo cách DRY, không cần lớp điều khiển "điều khiển". Mặt khác, nếu bạn có hai chế độ xem cả hai đều thực hiện tương tự với trường văn bản của chúng (chuyển đổi chúng thành số nguyên, đảm bảo chúng nằm trong khoảng từ 1-100), bạn có thể muốn xem xét trường con và thêm logic điều khiển. –