Trường Đại Học Sư Phạm Kỹ Thuật TP. HCM
Khoa Công Nghệ Thông Tin
Thiết Kế Phần Mềm Hướng Đối Tượng
VISITOR
PATTERN
GVHD: Nguyễn Trần Thi Văn
1
ĐẶT VẤN ĐỀ
ĐỊNH NGHĨA
CẤU TRÚC VÀ CÁC THÀNH PHẦN
NỘI DUNG
TÍNH CHẤT ĐẶC THÙ
ƯU ĐIỂM & KHUYẾT ĐIỂM
LĨNH VỰC ÁP DỤNG
CÁC MẪU LIÊN QUAN
CHƯƠNG TRÌNH DEMO
2
ĐẶT VẤN ĐỀ
3
ĐỊNH NGHĨA
Là mẫu thiết kế thuộc Behavior Pattern
Cho phép định nghĩa các thao tác (operations)
trên một tập các đối tượng (object) không
cùng kiểu mà không làm thay đổi định nghĩa
về lớp của các đối tượng đó.
Định nghĩa các operations trên các lớp visitors
4
5
Khi nào nên sử dụng Visitor Pattern ?
Tạo ra các chức năng mới với các đối
tượng đã có sẵn trong lớp mà không cần
thay đổi các lớp đó
CẤU TRÚC
6
Element:
ConcreteVisitor:
ObjectStructure:
ConcreteElement:
Visitor: là 1 interface.
Override
lại
các
operation
Là
Có
Đưathể
1rainterface
liệt
1lại
Visit
kêAccept
các
operation
định
thành
nghĩa
phần
cho
của
Accept
mỗi cha.
nó
lớp
cha,
operation
ConcreteVisitor.
các operation này
Mỗi
phương
thức
như
thế lớp
có
Các
Cung
cũng
Operation
operation
mang
cấp này
một
1
nhận
visitor
này
giao
dạng
mang
diện
như
là
ở
1
nhiệm
vụcầu
xử
lý đối
trên
thực
visitor
mức
đối
gửi số
yêu
cao
như
và
làVisit
cho
1
tới
phép
sốcác
Visistor.
Visitor
thể
lớp
tương
ứng.
thăm
Nó của
cho
các
thành
phép
phần
visitor
của
quyết
nó.
Có
định thể
lớp làcụ một
thể của
composite
thành
hoặc
phần Visit.
một bộ sưu tập như
danh sách hay tập hợp.
CÁC TÍNH CHẤT ĐẶC THÙ
Cung cấp thiết kế linh hoạt, việc mở rộng chức
năng mà không làm thay đổi cấu trúc đối
tượng.
Các hành động đều thực hiện trên các
ConcreteVisitor.
7
CÁC TÍNH CHẤT ĐẶC THÙ
Accept cũng được định nghĩa là lớp ảo với
tham số truyền có kiểu là visitor.
Cấu trúc đối tượng rất ít thay đổi. Việc thay đổi
các lớp cấu trúc đối tượng yêu cầu xác định
lại interface cho tất cả các visitor
8
ƯU ĐIỂM
Làm cho việc thêm các operation mới dễ dàng
Các thuật toán, cách sử dụng cấu trúc dữ liệu
sẽ được ẩn thông qua việc sử dụng visitor
Visitor tập hợp các phương thức liên quan lại
với nhau
9
KHUYẾT ĐIỂM
10
Việc thêm mới lớp ConcreteElement là rất khó
Phá vỡ tính đóng góiVisitor
Visit ( Warrior )
Visit ( Monster )
Visit ( Wizard )
Damaged
Visit ( Warrior )
Visit ( Monster )
Visit ( Wizard )
Move
Visit ( Warrior )
Visit ( Monster )
Visit ( Wizard )
Reduce
Damage
Visit
( Warrior
)
Visit
( Monster )
Visit
LĨNH VỰC ÁP DỤNG
Người dùng muốn thực hiện thao tác trên các
đối tượng thì cần các lớp cụ thể của chúng.
Muốn định nghĩa các operation mới trên các
cấu trúc.
Muốn tránh “làm hỏng” các lớp của chúng khi
thực hiện các operation.
11
CÁC MẪU LIÊN QUAN
Composite:
12
13
14
CHƯƠNG TRÌNH
DEMO
TÀI LIỆU THAM KHẢO
Design Patterns Elements of Reusable ObjectOriented Software – GangsOfFour
Head First Design Patterns
/>ttern-chuyen-vieng-tham-ky-bi
/
https://
15
16
Cảm ơn thầy
và các bạn đã lắng
nghe !