Professional Documents
Culture Documents
Observer Pattern Template Method Pattern
Observer Pattern Template Method Pattern
PATTERN
1.Giới thiệu
INDEX.HTML
Observer Pattern là một mẫu thiết kế thuộc nhóm Behavioral Pattern
Định nghĩa mối phụ thuộc một - nhiều giữa các đối tượng để khi mà một
đối tượng có sự thay đổi trạng thái, tất các thành phần phụ thuộc của nó sẽ
được thông báo và cập nhật một cách tự động.
Một đối tượng có thể thông báo đến một số lượng không giới hạn các đối
tượng khác..
INDEX.HTML
/02
Cách hoạt động
của Observer
Pattern
INDEX.HTML
/Bước
1:
Trong bước 1, ba
người quan sát
(Observer) đang yêu
cầu nhận thông báo
từ một đối tượng
(Subject).
EXAMPLE.HTM
L
/Bước
2:
Trong bước 2, chủ
thể (Subject) có thể
cấp các yêu cầu; nói
cách khác, một kết
nối được thiết lập.
EXAMPLE.HTM
L
/Bước
3:
Trong bước 3, chủ
thể (Subject) sẽ gửi
thông báo đến người
dùng đã đăng ký .
EXAMPLE.HTM
L
/Bước
4:
Trong bước 4 (tùy chọn),
Observer2 không muốn
nhận thêm thông báo và
yêu cầu hủy đăng ký bản
thân hoặc chủ thể
(Subject) không muốn
giữ Observer2 trong
danh sách thông báo do
một số lý do cụ thể và
anh ấy hủy đăng ký
Observer2. Vì vậy, mối
liên hệ giữa Subject và
người quan Observer2 đã
bị phá vỡ.
EXAMPLE.HTM
L
/Bước
5:
Trong bước 5, kể từ bây
giờ, chỉ Observer1 và
Observer3 nhận được
thông báo từ chủ thể
EXAMPLE.HTM
L
3.Kiến
trúc
INDEX.HTML
INDEX.HTML
YOUR LOGO
HERE
INDEX.HTML
YOUR LOGO
HERE
INDEX.HTML
YOUR LOGO
HERE
/ƯU ĐIỂM
• Đảm bảo nguyên tắc Open/Closed Principle (OCP): Cho phép thay đổi Subject và
Observer một cách độc lập. Chúng ta có thể tái sử dụng các Subject mà không cần tái sử
dụng các Observer và ngược lại. Nó cho phép thêm Observer mà không sửa đổi Subject
hoặc Observer khác.
• Thiết lập mối quan hệ giữa các objects trong thời gian chạy.
• Sự thay đổi trạng thái ở 1 đối tượng có thể được thông báo đến các đối tượng khác mà
không phải giữ chúng liên kết quá chặt chẽ.
• Không giới hạn số lượng Observer.
INDEX.HTML
YOUR LOGO
HERE
/NHƯỢC
ĐIỂM
• Unexpected update: Bởi vì các Observer
không biết về sự hiện diện của nhau, nó
có thể gây tốn nhiều chi phí của việc thay
đổi Subject.
• Subscriber được thông báo theo thứ tự
ngẫu nhiên.
INDEX.HTML
YOUR LOGO
HERE
INDEX.HTML
TEMPLATE
METHOD
PATTERN
1. Định nghĩa của GOF
• Xác định khung của một thuật toán trong một hoạt động, trì hoãn
một số bước đối với các lớp con.
• Phương pháp mẫu cho phép các lớp con xác định lại các bước
nhất định của thuật toán mà không thay đổi cấu trúc của thuật
toán.
2. Sơ đồ UML
AbstractClass chứa
templateMethod () nên
được tạo cuối cùng để
không thể ghi đè. Phương
pháp mẫu này sử dụng các
thao tác khác có sẵn để
chạy thuật toán nhưng
được tách riêng để triển
khai thực tế các phương
pháp này.
2. Sơ đồ UML
Tất cả các hoạt động
được sử dụng bởi phương
thức khuôn mẫu này được
thực hiện trừu tượng, vì vậy
việc triển khai của chúng
được chuyển sang các lớp
con.
Đơn giản, mẫu thiết kế
này hữu ích khi bạn triển
khai thuật toán nhiều bước
nhưng cho phép tùy chỉnh
thông qua các lớp con.
3. Ý tưởng
● Sử dụng mẫu này, bạn bắt đầu với cấu trúc tối thiểu hoặc thiết
yếu của một thuật toán.
● Sau đó, ta trì hoãn một số trách nhiệm đối với các lớp con. Kết
quả là, lớp dẫn xuất có thể xác định lại một số bước của thuật
toán mà không làm thay đổi quy trình của thuật toán.
● Đơn giản, mẫu thiết kế này hữu ích khi bạn triển khai thuật
toán nhiều bước nhưng cho phép tùy chỉnh thông qua các lớp
con.
YOUR LOGO
HERE
4. Ví dụ thực tế
INDEX.HTML
5. Thuật ngữ máy tính
●Giả sử rằng bạn đã được thuê để thiết kế một khóa học cấp bằng
kỹ sư trực tuyến. Bạn biết rằng, nói chung, học kỳ đầu tiên của khóa
học là như nhau đối với tất cả các khóa học. Đối với các học kỳ tiếp
theo, bạn cần thêm các bài báo hoặc môn học mới vào đơn đăng ký
dựa trên khóa học mà sinh viên đã chọn.
●Mẫu Phương pháp mẫu có ý nghĩa khi bạn muốn tránh mã trùng
lặp trong ứng dụng của mình nhưng cho phép các lớp con thay đổi
một số chi tiết cụ thể của quy trình làm việc của lớp cơ sở để mang lại
các hành vi khác nhau cho ứng dụng. (Tuy nhiên, bạn có thể không
muốn ghi đè hoàn toàn các phương thức cơ sở để thực hiện các thay
đổi căn bản trong các lớp con. Bằng cách này, mẫu khác với đa hình
đơn giản.)
6. Thực hiện (Implementation)
YOUR LOGO
HERE
7. Class diagram
INDEX.HTML
YOUR LOGO
HERE
INDEX.HTML
YOUR LOGO
HERE
INDEX.HTML
YOUR LOGO
HERE
Linh hoạt
4
Thiết kế được xác định
5 rõ ràng (tránh mơ hồ)
INDEX.HTML
YOUR LOGO
HERE
INDEX.HTML
YOUR LOGO
HERE