logo

Đang load dữ liệu

logo devmaster

VIỆN CÔNG NGHỆ VÀ ĐÀO TẠO DEVMASTER

Đào tạo - Phần mềm - Cho thuê nhân sự

  • 0969.609.003
  • 0978.611.889
  • Trang chủ
  • Các khoá đào tạo
    • Chuyên đề WEB - PHP

      • Lập trình web với HTML5 - CSS3- JQuery - Bootstrap - Ajax - [36 giờ]
      • Lập trình web frontend - reactjs - [75 giờ]
      • Lập trình web với mã nguồn mở PHP&MYSQL - PHP FRAMEWORK [126 giờ]

      Chuyên đề Mobile

      • Lập trình Games/Apps trên nền tảng Android - [120 giờ]
      • Lập trình Games/Apps trên nền tảng IOS - [120 giờ]

      Chuyên đề JAVA

      • Ngôn ngữ lập trình hướng đối tượng với java - [40 giờ]
      • Lập trình ứng dụng với java - [100 giờ]
      • Lập trình web site với java framework (JPA, HIBERNATE, SPRING MVC, SPRINGBOOT) - [276 giờ]

      Chuyên đề NETWORK/SECURITY

      • Khoá học Quản trị hạ tầng mạng CCNA v6 - [72 giờ]
      • Khoá học quản trị hệ thống với Windows SERVER 2012- [72 giờ]
      • Chuyên gia bảo mật hệ thống CompTIA + - [110 giờ]

      Chuyên đề .NET

      • Nền tảng lập trình hướng đối tượng với C# - [40 giờ]
      • Lập trình ứng dụng WINDOWS FORM - [100 giờ]
      • Lập trình Web với ASP.NET MVC 5, WebAPI - [145 giờ]

      Chuyên đề khác

      • Ngôn ngũ lập trình C/C++ - [80 giờ]
  • Lập trình cho trẻ em
  • Dịch vụ
    • Đào tạo theo như cầu
    • Cung cấp thiết bị - Phần mềm
    • Tư vấn - Thiết kế mạng hạ tầng
    • Tư vấn - Triển khai dịch vụ mạng
    • Tư vấn - Tư vấn, triển khai giám sát hệ thống
    • Thực tập dự án
  • Lịch khai giảng
  • Tin tức
    • Tin tức và sự kiện
    • Tin hoạt động
    • Tin công nghệ
    • Hội thảo, workshop, Codecam
    • Thông tin việc làm
    • Cẩm nang chia sẻ kiến thức
  • Tiện ích
  • Liên hệ

Tin tức và sự kiện

Sep - 2020

22

Giải thích mô hình MVC thông qua … cốc trà đá

Tin tức và sự kiện

 

1. Nếu bạn từng đi uống trà đá, thì bạn đã hiểu được MVC rồi

Model – View – Controller (MVC) là một mô hình thiết kế web hiện đại đã trở nên quá đỗi quen thuộc. Cứ thử bước vào một phòng làm việc của các lập trình viên xem, bạn sẽ bị “dội bom” bởi hàng đống thứ khủng khiếp mà bạn có khi còn chưa từng nghe tên như là Ruby on Rails, Angular hay Django.

Nhìn rộng hơn, logic của mô hình MVC được sử dụng để mô tả quá trình làm web của đại đa số các ngôn ngữ như là PHP, Ruby, Python hay JavaScript.

Nhiều ông lập trình web mà cứ theo kiểu nhìn đời qua kẽ lá. Cứ thử để mấy ông lập trình viên khác nhìn vào code của họ xem, họ sẽ cho ngay một bài thuyết trình dài cả tiếng toàn những giáo điều quen thuộc. 

Mà rõ ràng là mấy thứ đấy không thực tế. Trong khi mô hình MVC hiện tại hoàn toàn có thể được giải thích dễ dàng bằng hình thức trà đá vỉa hè. Vậy nên, nếu bạn từng đi ngồi trà đá với bạn bè, thì bạn có thể hiểu được cấu trúc của các ứng dụng web hiện đại rồi đấy.

 

 

2. Mô hình MVC là gì?

MVC gồm 3 thành phần bao gồm: 

  • M là Model: một cấu trúc dữ liệu chắc chắn, chuẩn bị dữ liệu để cung cấp cho Controller
  • V là View: nơi hiển thị dữ liệu cho người dùng theo cách mà người dùng có thể dễ dàng hiểu và tương tác được
  • C là Controller: nhận về lệnh từ người dùng, gửi lệnh đến Model để lấy hay cập nhật dữ liệu, rồi truyền lệnh đến View để cập nhật giao diện hiển thị cho đúng với dữ liệu đã cập nhật

Trên sơ đồ thì nó sẽ như thế này

 

 

Ôi giời lằng nhằng phức tạp quá. Làm cốc trà đá cho hạ nhiệt

Bạn bước vào quán trà đá. Giữa mùa hè, quán nào quán nấy nóng nực đông đúc. Bạn luồn lách qua đám đông để gọi cho bằng được bà chủ quán “cho cháu một cốc trà đá cô ơi”.

Lúc này, bạn là “người dùng” và “cốc trà đá” là “yêu cầu từ phía người dùng”. Đối với bạn, cốc trà đá là thứ đồ uống ưa thích, mát lạnh, quá phù hợp để xua tan cái nóng thủ đô 40 độ C.

Bà chủ quán gật đầu “ô kê em nhớ”. Đối với bà chủ quán, cốc trà đá không chỉ ngon lành mát lạnh, mà còn là một mớ quy trình các bước:

  1. Lấy cái cốc
  2. Cho đá vào
  3. Cho trà vào
  4. Cho thêm nước lọc cho trà loãng bớt
  5. Khuấy đều lên
  6. Đưa cốc trà cho bạn
  7. Thanh toán

Bộ não của bà chủ quán lúc này đóng vai trò Controller. Kể từ thời điểm bạn nói “một cốc trà đá” bằng tiếng Việt và bà chủ quán hiểu được, công việc bắt đầu. Trà đá, nước mía hay cocktail thì cũng như nhau, nhưng nguyên liệu thì hoàn toàn khác biệt. Bà chủ quán chỉ có thể sử dụng những công cụ và nguyên liệu của quán, và những công cụ đó sẽ đóng vai trò Model, bao gồm:

  • Đôi tay của bà chủ
  • Các nguyên liệu pha chế (trà, nước …)
  • Đá lạnh
  • Bia, nước ngọt, thuốc lá…
  • Chanh, sấu, gừng…
  • Các ly cốc để đựng đồ uống

Những nguyên liệu và công cụ này, thông qua một loạt các bước, đã trở thành cốc trà đá mát lạnh đến tay bạn. Cốc trà đá lúc này đóng vai trò “View”. “View” được làm nên từ những công cụ, nguyên liệu trong “Model”, được chế biến và bàn giao tới tay bạn thông qua “Controller” (chính là bộ não của bà chủ quán)

 

 

3. Bài học rút ra là gì?

  • 1 cốc không đủ, bạn muốn gọi cốc nữa? Rõ ràng là bạn không thể hét to vào cái cốc đã hết (chính là “View”) được, bạn phải gọi bà chủ quán “Controller”.

– Thời gian từ lúc bà chủ quán nhận được yêu cầu tới khi làm xong phải tối thiểu nhất có thể. Đó chính là “skinny controller”, có thể hiểu là “controller” nên chứa tối thiểu lượng logic cần xử lý và được quản lý lượng model nhiều nhất có thể. Một bà chủ quán “thiện nghệ” không chỉ ghi nhớ chính xác cách làm, mà còn chuẩn bị đầy đủ công cụ và nguyên liệu để không mất nhiều thời gian tìm kiếm và chế biến.

– Vậy nếu bà chủ quán đưa hết nguyên liệu cho bạn rồi bảo bạn tự pha? Chẳng ai làm thế cả. Do vậy, bạn cần phải để việc xử lý logic trên model nhiều nhất có thể, và tối giản hóa view. Nói cách khác, được phục vụ tận miệng thì vẫn thích hơn là phải đi pha.

 

 

  • Nếu bạn gọi 1 lon bia thì sao? Bà chủ chắc chẳng phải làm gì nhiều, bật nắp lon bia rồi đưa bạn là xong. Nhưng mà rõ ràng bạn vẫn phải gọi bà chủ quán, vì lon bia không thể tự nhảy ra trước mặt bạn được.

4. Quay trở lại vấn đề lập trình web

Giờ thử xem một ứng dụng web hiện đại có quy trình thế nào nhé

– Người dùng tạo ra một yêu cầu thông qua đường dẫn, ví dụ /home

– Controller nhận yêu cầu và đưa ra một mệnh lệnh để xử lý yêu cầu đó. Nếu lệnh thực thi với phần View thì cập nhật lại màn hình hiển thị, với Model thì để trình diễn logic. Giả sử yêu cầu của người dùng có yếu tố logic

– Model thực thi phần logic lấy từ một cơ sở dữ liệu nào đó và gửi trả lại phản hồi theo hướng dẫn từ Controller

– Controller truyền dữ liệu này ra phần view và cập nhật lại giao diện cho người dùng.

– Mọi yêu cầu đều phải đi qua Controller trước khi chuyển hóa thành lệnh thực thi cho View hay Model.

5. Tổng kết

Bất cứ khi nào bạn học một framework lập trình web mới, bạn sẽ gặp mô hình MVC. Nói cách khác, một khi bạn đã lập trình dựa trên MVC thì không cần phải ngán bất cứ framework mới nào cả.

Nguồn: https://www.codementor.io/@kevinkononenko/model-view-controller-mvc-explained-through-ordering-drinks-at-the-bar-i7nupj4oe

Nguyễn Khắc Thế

Devmaster Acadamy via Tạp chí Lập trình

Các bài viết cùng chủ đề

KHÓA HỌC LẬP TRÌNH #FULLSTACK TẠI #DEVMASTER – LỘ TRÌNH TOÀN DIỆN TỪ CƠ BẢN ĐẾN CHUYÊN NGHIỆP
KHÓA HỌC LẬP TRÌNH #FULLSTACK TẠI #DEVMASTER – LỘ ...
🔟 Buổi hướng dẫn đồ án
🔟 Buổi hướng dẫn đồ án
KHÉP LẠI MỘT HÀNH TRÌNH
KHÉP LẠI MỘT HÀNH TRÌNH
Tưng bừng ưu đãi khóa học lập trình fullstack với công nghệ JavaSpringBoot
Tưng bừng ưu đãi khóa học lập trình fullstack với ...
Devmaster- Thông báo khai giảng khóa học lập trình cung chuyên gia tháng 8-2023
Devmaster- Thông báo khai giảng khóa học lập trình...
Khóa học lập trình ReactJs khai giảng tháng 7 - 2023 tại devmaster
Khóa học lập trình ReactJs khai giảng tháng 7 - 20...

Các khóa đào tạo chuyên đề

Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
Lập trình ứng dụng trên nền tảng android Lập trình ứng dụng trên nền tảng android
Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack

Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack
Lập trình ứng dụng với WINDOWS FORM Lập trình ứng dụng với WINDOWS FORM
Lập trình ứng dụng với JAVA (FORM) Lập trình ứng dụng với JAVA (FORM)
Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery
Lập trình frontend với reacjs (Full) Lập trình frontend với reacjs (Full)
Viện Công Nghệ Và Đào Tạo Devmaster

DEVMASTER ACADEMY

Địa chỉ: Tầng 6 - Tòa nhà VIỆN CÔNG NGHỆ
Số 25, Vũ Ngọc Phan - Láng Hạ - Đống Đa - Hà Nội

Hotline: 0969 609 003 | 0978 611 889

devmaster.contact@gmail.com

hna.tvchung@gmail.com

CÁC KHÓA HỌC CHUYÊN ĐỀ

  • Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
  • Lập trình ứng dụng trên nền tảng android
  • Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack
  • Lập trình ứng dụng với WINDOWS FORM
  • Lập trình ứng dụng với JAVA (FORM)
  • Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
  • Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery
  • Lập trình frontend với reacjs (Full)
Viện Công Nghệ Và Đào Tạo Devmaster

VIỆN CÔNG NGHỆ VÀ ĐÀO TẠO DEVMASTER - Học thực tế * Làm thực tế * Cam kết việc làm
Copyright by Ⓒ DEVMASTER 2015