University of Technical Education HCMC
Faculty of Information Technology
----o0o----
OBJECT-ORIENTED
ANALYSIS AND DESIGN
1
STATE PATTERN
Lecturer: Nguyễn Trần Thi Văn
2
SINH VIÊN THỰC HIỆN
Lê Anh Nhân
14110136
Trần Lâm Anh Duy
14110025
Lê Huỳnh Hải Triều
14110207
Trần Đức Huy
14110080
3
1. Đặt vấn đề
2. Tổng quan về STATE
3. Mục đích sử dụng
4. Cấu trúc mẫu
5. Lợi ích khi sử dụng State Pattern
6. Các mẫu liên quan
4
1. Đặt vấn đề :
Máy ATM: quá trình rút tiền.
Vậy trạng thái là gì?
5
2. Tổng quan về STATE
Cho phép một đối tượng thay đổi hành vi khi trạng thái bên trong của nó thay đổi.
Sử dụng tính Đa Hình để định nghĩa những hành vi khác nhau cho những trạng
thái khác nhau của một đối tượng.
Biến cố là các sự kiện xảy ra làm cho đối tượng chuyển trạng thái(tự xảy ra hoặc
bị bên ngoài tác động).
3. Mục đích sử dụng
6
Được dùng trong các hệ thống có nhiều trường hợp xét trạng thái.
Ít rắc rối.
Dễ sử dụng.
7
4. Cấu trúc mẫu
4.1. Cấu trúc, các lớp/đối tượng tham gia:
8
4. Cấu trúc mẫu
4.2. Ý nghĩa và vai trò của từng lớp:
Context: định nghĩa một interface duy nhất cho thế giới bên ngoài.
State: là một abstract class định nghĩa hành vi liên quan đến tất cả những trạng
thái có thể có của Context.
ConcreteState: là những class được kế thừa từ State class, định nghĩa bản chất
thực sự của trạng thái.
‘Context’ sẽ duy trì một con trỏ tới ‘State’ hiện tại. Để thay đổi trạng thái thì ta phải
thay đổi con trỏ.
9
5. Lợi ích khi sử dụng State Pattern
Không còn phụ thuộc vào câu lệnh điều kiện như if/else hay switch/case
Hạn định tất cả các hành vi liên quan đến một trạng thái nhất định vào một đối
tượng:
Các trạng thái mới có thể dễ dàng được thêm vào bằng cách định nghĩa các class mới,
làm tăng tính linh động
Đơn giản hóa quá trình bảo trì
Việc chuyển đổi trạng thái sẽ được tường minh: Những đối tượng riêng biệt cho
những trạng thái riêng biệt sẽ khiến việc chuyển đổi được tường minh thay vì phải
sử dụng dữ liệu nội để định nghĩa việc chuyển đổi trong một đối tượng duy nhất.
10
6. Các mẫu liên quan
Các đối tượng state thường là Singleton
-Mẫu Flyweight: giải thích khi nào và làm sao các đối tượng Object có thể được
chia sẻ
-Mẫu Interpreter có thể sử dụng State để định nghĩa parsing context
11
Cám ơn
Thầy và các bạn đã chú ý lắng nghe!