Professional Documents
Culture Documents
Mẫu Visitor Nhóm 8
Mẫu Visitor Nhóm 8
Nhóm số 8
Nội dung
1. Tổng quan
Tên
Mô tả ngắn về mẫu
Phân loại
• Sử dụng khi cần thực hiện thao tác trên tất cả các phần tử
của cấu trúc đối tượng phức tạp.
• Sử dụng để làm sạch logic nghiệp vụ của các hành vi phụ
trợ.
• Sử dụng khi một hành vi chỉ có ý nghĩa trong một số lớp của
hệ thống phân cấp lớp, nhưng không có ý nghĩa trong các
lớp khác.
3.1 Cấu trúc mẫu
3.1 cấu trúc mẫu
Concrete Visitor: Mỗi
Concrete Visitor triển khai
một số phiên bản của các
hành vi giống nhau, được
điều chỉnh cho các lớp phần
tử cụ thể khác nhau.
3.1 Cấu trúc mẫu
Giả sử bạn đang phát triển một ứng dụng quản lý nhà hàng
và bạn có một cấu trúc dữ liệu đơn giản để lưu trữ các loại
món ăn. Mỗi loại món ăn có thể là một đối tượng riêng biệt,
nhưng chúng cùng có một phương thức chung là "accept",
cho phép đối tượng visitor thực hiện các hoạt động trên
chúng.
3.2 Vi du minh hoa
Đầu tiên, chúng ta định nghĩa một interface Visitor để đại
diện cho các hoạt động mà chúng ta muốn thực hiện trên
các món ăn:
15
5. Ưu điểm, Nhược điểm
Ưu điểm
• Open/Closed Principle: có thể giới thiệu một hành vi mới có thể hoạt
động với các đối tượng của các lớp khác nhau mà không cần thay đổi
các lớp này.
• Single Responsibility Principle: có thể chuyển nhiều phiên bản của cùng
một hành vi vào cùng một lớp.
• Một đối tượng visitor có thể tích lũy một số thông tin hữu ích khi làm
việc với nhiều đối tượng khác nhau. Điều này có thể giúp ích khi ta
muốn duyệt qua một số cấu trúc đối tượng phức tạp, chẳng hạn như
cây đối tượng và áp dụng visitor cho từng đối tượng của cấu trúc này.
Nhược điểm
• Cần cập nhật tất cả visitor mỗi khi một lớp được thêm vào hoặc xóa
khỏi hệ thống phân cấp phần tử.
• Các visitor có thể thiếu quyền truy cập cần thiết vào các trường riêng
tư và phương thức của các phần tử mà họ phải làm việc với.
6. Liên hệ tới các mẫu khác
• Composite: Có thể sử dụng Visitor để thực hiện một thao tác trên toàn
bộ cây Composite.
• Command: Có thể xem Visitor là một phiên bản hiệu quả của
Command. Các đối tượng của nó có thể thực thi các operation trên các
đối tượng khác nhau của các lớp khác nhau.
• Iterator: Có thể sử dụng Visitor cùng với Iterator để duyệt qua một cấu
trúc dữ liệu phức tạp và thực hiện một số thao tác trên các phần tử của
nó, ngay cả khi tất cả chúng đều có các lớp khác nhau.