- vừa được xem lúc

[Design Patterns] MVC Pattern - Phần 1: Giới thiệu

0 0 42

Người đăng: Semi Art

Theo Viblo Asia

MVC là viết tắt của Model - View - Controller, tạm dịch nôm na là Mô Phỏng - Hiển Thị - Điều Hành. MVC được sử dụng khi chúng ta muốn tách rời logic Mô Phỏng hoạt động của phần mềm Model và logic Hiển Thị của giao diện người dùng View. Nhờ vậy thì việc phát triển 2 khối này có thể được tiến hành độc lập mà không cần phải chờ đợi lẫn nhau; Và trong trường hợp chúng ta cần tiến hành cập nhật hay chỉnh một khối thì sẽ không ảnh hưởng gì tới khối còn lại.

Kiến trúc tổng quan

Trong MVC, chúng ta có 3 đối tượng chính cần quan tâm:

  • Model là đối tượng Mô Phỏng logic hoạt động và xử lý dữ liệu của phần mềm.
  • View là đối tượng vẽ giao diện người dùng và xử lý các logic Hiển Thị.
  • Controller là đối tượng trung gian Điều Hành giao tiếp dạng request/response (yêu cầu/phản hồi) giữa ModelView, đồng thời có thể điều hành việc thực hiện một số thao tác tiền xử lý/hậu xử lý đối với các requestresponse.

Chúng ta cũng có thể gặp ViewModel được triển khai thêm kết nối observe/notify bằng Observer Pattern hay một dạng giao tiếp tương tự cho phép Model phát đi thông báo sự kiện về việc dữ liệu được cập nhật để View có thể đáp ứng tức thì với sự thay đổi của dữ liệu theo thời gian thực; Và sơ đồ khối của kiến trúc MVC lúc này có dạng như 1 vòng khép kín:

Tuy nhiên, ngay cả trong trường hợp này, Model vẫn sẽ không biết gì về logic hiển thị của View và chỉ đơn giản là cung cấp một giao diện trừu tượng Obserable hay Observed (có thể được quan sát) để cho code client ở bất kỳ đâu đó có thể gửi các Observer tới và gắn vào. Khi dữ liệu được cập nhật thì Model chỉ thực hiện công việc của mình và thông báo sự kiện cho các Observer mà không quan tâm tới việc View có được cập nhật hay không.

Tương tự thì về phía View vẫn sẽ không biết gì về logic quản lý dữ liệu của Model mà chỉ đơn giản là tạo ra các Observer rồi gắn tới một giao diện truy vấn dữ liệu trừu tượng được cung cấp từ đâu đó. Khi nhận được các trạng thái dữ liệu mới được báo cáo bởi các Observer thì View tự thực hiện việc điều chỉnh giao diện người dùng chứ không phải là do Model điều hành.

Vì vậy nên chung quy thì chúng ta vẫn chỉ có một kiến trúc MVC tổng quan duy nhất với 3 đối tượng được xếp hàng thẳng tắp và Controller được đặt ở giữa ModelView như ban đầu.

Áp dụng triển khai

Phương thức triển khai MVC chi tiết sẽ rất đa dạng và khác biệt đối với mỗi trường hợp cụ thể, tùy thuộc vào các yếu tố như:

  • Quy mô của phần mềm đang xây dựng nhỏ hay lớn?
  • Kiểu phần mềm đang xây dựng là gì? Web, ứng dụng native, hay console?
  • Tiêu chí quản lý code là gì? v.v....

Vì vậy nên chúng ta có thể sẽ bắt gặp code triển khai MVC với các class được thiết kế theo kiểu cứ 1 class Model sẽ có 1 class View1 class Controller tương ứng; Và các class View sẽ phản ánh thông tin là dữ liệu của các class Model giống như lý do nguyên thủy khiến MVC xuất hiện.

Cảm hứng ban đầu khi MVC được tạo ra là để cho phép việc xây dựng giao diện người dùng cho bất kỳ object nào.
_Alan Kay

Kiểu thiết kế này đặc biệt thường thấy với các ứng dụng console hay desktop với tính năng nhập/xuất dữ liệu không quá phức tạp.

Tuy nhiên, đối với các ứng dụng web hay các ứng dụng có tính năng phức tạp hơn thì mối liên hệ như trên dường như không bao giờ tồn tại. Lý do là vì lúc này logic hiển thị giao diện người dùng trở nên phức tạp hơn và yêu cầu một cơ chế giao tiếp linh hoạt hơn giữa khối viewcontroller. Điều tương tự cũng xảy ra với khối xử lý logic điều hành hoạt động và xử lý dữ liệu, dẫn tới yêu cầu cơ chế giao tiếp linh động hơn giữa khối modelcontroller.

Ứng dụng ví dụ

Trong khuôn khổ giới thiệu pattern, chúng ta sẽ xây dựng một ứng dụng quản lý một thư viện nhỏ được sử dụng trên 01 máy tính của người trông coi thư viện. Giao diện tương tác với người sử dụng là console và các đối tượng dữ liệu cần quản lý bao gồm:

  • Các đầu sách mà thư viện đang sở hữu.
  • Người đọc đã đăng ký thẻ thành viên của thư viện
  • Các giao dịch mượn/trả sách.
  • Các giao dịch thanh toán phí thành viên.
  • Các giao dịch thanh lý sách (sách cũ, hoặc người dùng làm thất lạc).
  • Các giao dịch bổ sung các đầu sách mới.

(Sắp đăng tải) [Design Patterns] MVC Pattern - Phần 2: Model

Bình luận

Bài viết tương tự

- vừa được xem lúc

Đôi điều về mô hình MVC

Là một lập trình viên Web không thể không biết đến mô hình MVC. Nó là một mô hình được sử dụng trong hầu hết các dự án phát triển Web.

0 0 39

- vừa được xem lúc

Tạo website ASP.NET MVC đơn giản (P3)

Ở bài viết trước, mình đã giới thiệu cách Tạo mới Controller và View theo mô hình MVC. Bài viết này, mình sẽ viết về cách Tạo mới Model và một chút giới thiệu về Razor View nha.

0 0 54

- vừa được xem lúc

Một chút về MVC, MVP và MVVM

MVC, MVP, và MVVM là 3 mô hình thông dụng khi phát triển phần mềm. Trong bài viết này, mình sẽ giới thiệu với các bạn 3 mô hình Model View Controller (MVC), Model View Presenter (MVP) và Model View Vi

0 0 86

- vừa được xem lúc

Cài đặt ứng dụng PHP thuần sử dụng MVC và OOP

1. Giới thiệu về MVC. 1.1.

0 0 53

- vừa được xem lúc

Tìm Hiểu Về Mô Hình 3 Lớp (3 Layer)

Do dạo gần đây mình đang làm về một số app desktop sử dụng mô hình 3 lớp, nên mình sẽ note lại những điều cần chú ý trong mô hình 3 lớp. Khái niệm:.

0 0 36

- vừa được xem lúc

Tổng quan về MVC API trong .NET 6

1. Mô hình MVC. . .

0 0 30