Đặt vấn đề
Trong cuốn Head First Design Pattern, chúng ta đã biết rằng các loại design pattern có thể được nhóm thành 3 loại chính:
- Creation design pattern
- Behavior design pattern
- Structural design pattern
Mỗi loại pattern cung cấp các giải pháp để xử lý các vấn đề cụ thể.
Trong đó, đặc biệt là structural design pattern có cách thức triển khai và định nghĩa có nhiều điểm tương đồng.
Tôi sẽ đi 1 vòng để làm rõ các điểm khác biệt của các pattern trong nhóm này
Các structural patterns cơ bản
- Composite pattern
- Decorator pattern
- Adapter pattern
- Proxy pattern
- Bridge pattern
- Facade
- Fly weight
Composite pattern
Mục đích sử dụng
Xử lý các bài toán liên quan đến cấu trúc dạng cây mà ở đó các node hoặc leaf đều có các phương thức xử lý chung
Ví dụ điển hình
Folder structure
Parent folder có thể add/remove/get child folder và leaf node có thể là folder hoặc file bất kỳ
Trên mỗi folder/file, người dùng có thể thao tác open/edit/delete và tính size của node hiện tại
- Nếu node hiện tại là
leafthì chỉ cần return thuộc tính size củaleafhiện tại - Nếu node hiện tại là
rootthì phải thực hiện tính tổng size của cácnode concho đến cácleaf node
Giao diện danh mục phim
Danh mục có cấu trúc từ root đến các leaf, leaf có thể là một tập phim, một series, một category con chứa các deal cho phim mới ra mắt
1
2
Phim hành động > Châu Âu > Peaky blinders phần 1 > Peaky binliders tập 1
Phim hành động > Các phim mới nhất của Cillian Murphy