Lập trình UD Desktop_14 - Design pattern, mô hình 3-layers, MVC

Bài trước: Lập trình UD Desktop_13 - Tạo CSDL và giao diện
-----

3.2.3       Design pattern, mô hình 3-layers, MVC


Xem clip sau (lưu ý: tác giả trình bày dễ hiểu, tuy nhiên do tác giả không quan tâm tới việc đặt tên chuẩn, nên cách phân lớp và đặt tên chưa chính xác):


Mẫu thiết kế (design pattern)

Theo wiki[1], trong công nghệ phần mềm, một mẫu thiết kế là một giải pháp tổng thể cho các vấn đề chung trong thiết kế phần mềm. Một mẫu thiết kế không phải là một thiết kế hoàn thiện để mà có thể được chuyển đổi trực tiếp thành mã; nó chỉ là một mô tả hay là sườn (template) mô tả cách giải quyết một vấn đề mà có thể được dùng trong nhiều tình huống khác nhau. Các mẫu thiết kế hướng đối tượng thường cho thấy mối quan hệ và sự tương tác giữa các lớp hay các đối tượng, mà không cần chỉ rõ các lớp hay đối tượng của từng ứng dụng cụ thể. Các giải thuật không được xem là các mẫu thiết kế, vì chúng giải quyết các vấn đề về tính toán hơn là các vấn đề về thiết kế.

Mẫu thiết kế giúp chương trình linh hoạt, dễ thay đổi, dễ bảo trì.

Mẫu thiết kế được chia thành ba nhóm chính, mỗi nhóm có nhiều mẫu. Cụ thể:

– Nhóm khởi tạo (creational pattern): dùng nhiều trong việc khởi tạo đối tượng. Gồm các mẫu: Abstract Factory, Builder, Factory Method, Multiton, Pool, Prototype, Simple Factory, Singleton, Static Factory

– Nhóm cấu trúc (structural pattern): dùng trong việc thiết lập, định nghĩa quan hệ giữa các đối tượng. Gồm các mẫu: Adapter/ Wrapper, Bridge, Composite, Data Mapper, Decorator, Dependency Injection, Façade, Fluent Interface, Flyweight, Registry, Proxy

– Nhóm hành vi (behavioral pattern): dùng trong việc thực hiện các hành vi của đối tượng. Gồm các mẫu: Chain Of Responsibilities, Command, Iterator, Mediator, Memento, Null Object, Observer, Specification, State, Strategy, Template Method, Visitor, Delegation, Service Locator, Repository, Entity-Attribute-Value (EAV)

Đọc thêm về Mẫu thiết kế tại đây:



Mô hình 3-layers

Đọc một số bài viết sau:

https://techtalk.vn/mo-hinh-3-lop-co-gi-hay.html (để ý, cái hình vẽ có nhầm một chút, Business layer bị lặp lại 2 lần)




Mô hình 3-layers là một dạng của design pattern.

[Xem hình minh họa về mô hình 3-layers]



[Hình minh họa chi tiết hơn về mô hình 3-layers]



Mô hình 3-layers gồm 3 lớp:

– Presentation Layer (hay GUI layer– Graphic User Interface): giao tiếp với người dùng, gồm các thành phần giao diện và thực hiện các công việc như nhập liệu, hiển thị dữ liệu, kiểm tra tính đúng đắn dữ liệu trước khi gọi lớp Business Logic Layer (BLL)

– Business Logic Layer (BLL): là nơi đáp ứng các yêu cầu thao tác dữ liệu của Presentation Layer, xử lý chính nguồn dữ liệu từ Presentation Layer trước khi truyền xuống Data Access Layer và lưu xuống hệ quản trị CSDL; là nơi kiểm tra các ràng buộc, tính toàn vẹn và hợp lệ dữ liệu, thực hiện tính toán và xử lý các yêu cầu nghiệp vụ, trước khi trả kết quả về Presentation Layer

– Data Access Layer (DAL): có chức năng giao tiếp với hệ quản trị CSDL, như thực hiện các công việc liên quan đến lưu trữ và truy vấn dữ liệu (tìm kiếm, thêm, xóa, sửa). Còn có tên gọi khác là DAO (Data Access Object).

Ngoài ra có thể còn có một lớp phụ, có tên là DTO (Data Transfer Object), định nghĩa các class tương ứng với các table trong database, định nghĩa cột của nó, cũng như để gán dữ liệu khi truy vấn.

Cách hoạt động của 3-layers:

– Đầu tiên người dùng giao tiếp với Presentation Layer (GUI) để gửi đi thông tin và yêu cầu. Tại lớp này, các thông tin sẽ được kiểm tra, nếu vượt qua được việc kiểm tra, chúng sẽ được chuyển xuống Business Logic Layer (BLL).

– Tại BLL, các thông tin sẽ được biến đổi, tính toán theo đúng yêu cầu đã gửi, nếu không cần đến Database thì BLL sẽ gửi trả kết quả về GUI, ngược lại nó sẽ đẩy dữ liệu (thông tin đã xử lý) xuống Data Access Layer (DAL).

– DAL sẽ thao tác với Database và trả kết quả về cho BLL, BLL kiểm tra và gửi nó lên GUI để hiển thị cho người dùng.

– Nếu gặp lỗi (các trường hợp không đúng dữ liệu), thông tin về lỗi sẽ được gửi lên lớp phía trên, khi tới GUI sẽ hiển thị ra cho người dùng. Các dữ liệu được trung chuyển giữa các lớp thông qua một đối tượng gọi là Data Transfer Object (DTO), đơn giản đây chỉ là các class đại diện cho các đối tượng được lưu trữ trong Database

Mô hình MVC

Mô hình MVC (Model - View - Controller) là một kiến trúc phần mềm hay mô hình thiết kế, được sử dụng trong kỹ thuật phần mềm. Nó giúp tách ứng dụng ra 3 thành phần khác nhau gồm Model, View và Controller. Mỗi thành phần có nhiệm vụ riêng và độc lập với các thành phần khác. Các thành phần của MVC:

– Model: là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử lý, truy xuất database, đối tượng mô tả dữ liệu như các class, hàm xử lý

– View: đảm nhận việc hiển thị thông tin, tương tác với người dùng, nơi chứa tất cả các đối tượng GUI (hiểu nôm na là các control: ví dụ textbox, combobox, listview)

– Controller: có nhiệm vụ nhận các yêu cầu từ người dùng và gọi đúng những phương thức xử lý chúng để thao tác trực tiếp với Model.

[Xem hình minh họa]



Cách làm việc của mô hình MVC

– Người dùng tương tác với View, bằng cách bấm vào một nút trên giao diện, sự kiện sẽ được gửi đi.

– Controller nhận và chuyển chúng đến đúng phương thức xử lý ở Model

– Model nhận thông tin và thực thi các yêu cầu

– Khi Model hoàn tất việc xử lý, View sẽ nhận kết quả từ Model và hiển thị kết quả cho người dùng

<///// hết buổi 16



[1] https://vi.wikipedia.org/wiki/M%E1%BA%ABu_thi%E1%BA%BFt_k%E1%BA%BF_ph%E1%BA%A7n_m%E1%BB%81m
-----
Tiếp theo: Lập trình UD Desktop_15 -

Xem thêm: Danh sách các bài học