Đây có phải là điều tương tự như 'ViewModel' từ mẫu thiết kế Model-View-ViewModel (MVVM)
Không.
Đó sẽ là thế này :
Điều đó có chu kỳ. Chú Bob đã cẩn thận tránh chu kỳ .
Thay vào đó bạn có điều này:
Mà chắc chắn không có chu kỳ. Nhưng nó khiến bạn tự hỏi làm thế nào quan điểm biết về một bản cập nhật. Chúng ta sẽ đến đó trong giây lát.
hoặc nó là một đối tượng truyền dữ liệu đơn giản (DTO)?
Để trích dẫn Bob từ trang trước:
Bạn có thể sử dụng các cấu trúc cơ bản hoặc các đối tượng truyền dữ liệu đơn giản nếu bạn muốn. Hoặc bạn có thể đóng gói nó thành một hashmap hoặc xây dựng nó thành một đối tượng.
Kiến trúc sạch p207
Vì vậy, chắc chắn, nếu bạn thích.
Nhưng tôi cực kỳ nghi ngờ những gì thực sự làm phiền bạn là đây :
Việc lạm dụng UML nhỏ dễ thương này tương phản hướng phụ thuộc mã nguồn với hướng điều khiển. Đây là nơi câu trả lời cho câu hỏi của bạn có thể được tìm thấy.
Trong mối quan hệ sử dụng:
luồng điều khiển đi theo cùng hướng mà phụ thuộc mã nguồn thực hiện.
Trong một mối quan hệ thực hiện:
luồng điều khiển thường đi theo hướng ngược lại, sự phụ thuộc mã nguồn thực hiện.
Điều đó có nghĩa là bạn đang thực sự nhìn vào điều này:
Bạn sẽ có thể thấy rằng luồng điều khiển sẽ không bao giờ có được từ Người thuyết trình đến Chế độ xem.
Làm thế nào mà có thể được? Nó có nghĩa là gì?
Điều đó có nghĩa là chế độ xem có luồng riêng của nó (không phải là bất thường) hoặc (như @Euphoric chỉ ra) luồng kiểm soát đang đi vào chế độ xem từ một thứ khác không được mô tả ở đây.
Nếu đó là cùng một chủ đề thì Chế độ xem sẽ biết khi nào Mô hình xem sẵn sàng để đọc. Nhưng nếu đó là trường hợp và khung nhìn là GUI thì sẽ khó có thể sơn lại màn hình khi người dùng di chuyển xung quanh trong khi họ chờ DB.
Nếu khung nhìn có luồng riêng thì nó có luồng điều khiển riêng. Điều đó có nghĩa là để thực hiện điều này, Chế độ xem sẽ phải thăm dò Mô hình Chế độ để nhận thấy các thay đổi.
Vì Người thuyết trình không biết Chế độ xem tồn tại và Chế độ xem không biết Người thuyết trình tồn tại nên họ không thể gọi nhau. Họ không thể ném các sự kiện vào nhau. Tất cả những gì có thể xảy ra là Người thuyết trình sẽ ghi vào Mô hình xem và Chế độ xem sẽ đọc Mô hình xem. Bất cứ khi nào nó cảm thấy thích nó.
Theo sơ đồ này, điều duy nhất mà Chế độ xem và Người trình bày chia sẻ là kiến thức về Mô hình Chế độ xem. Và nó chỉ là một cấu trúc dữ liệu. Vì vậy, đừng hy vọng nó có bất kỳ hành vi nào.
Điều đó có vẻ không thể nhưng nó có thể được thực hiện để hoạt động ngay cả khi Mô hình xem phức tạp. Một trường cập nhật nhỏ là tất cả các chế độ xem sẽ phải thăm dò để phát hiện thay đổi.
Bây giờ tất nhiên bạn có thể khăng khăng sử dụng mẫu người quan sát hoặc có một số điều cơ bản che giấu vấn đề này với bạn nhưng xin vui lòng hiểu rằng bạn không phải làm vậy.
Đây là một chút thú vị tôi đã minh họa dòng kiểm soát:
Lưu ý rằng bất cứ khi nào bạn thấy luồng đi ngược lại các hướng tôi đã xác định trước đó, điều bạn đang thấy là một cuộc gọi trở lại. Thủ thuật đó sẽ không giúp chúng ta đến được View. Chà, trừ khi trước tiên chúng ta trở lại bất cứ thứ gì gọi là Bộ điều khiển. Hoặc bạn chỉ có thể thay đổi thiết kế để bạn có thể xem. Điều đó cũng khắc phục sự cố giống như bắt đầu của sự cố yo-yo với Truy cập dữ liệu và Giao diện.
Điều duy nhất khác để tìm hiểu ở đây ngoài đó là Bộ xử lý trường hợp sử dụng có thể gọi khá nhiều thứ theo bất kỳ thứ tự nào nó muốn miễn là nó gọi cho người trình bày trước.