Home Distinguish structural patterns
Post
Cancel

Distinguish structural patterns

Đặ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 folderleaf 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à leaf thì chỉ cần return thuộc tính size của leaf hiện tại
  • Nếu node hiện tại là root thì phải thực hiện tính tổng size của các node con cho đến các leaf 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

Structure

This post is licensed under CC BY 4.0 by the author.