Thứ Năm, 21 tháng 3, 2013

Composite

1. Khái niệm

Composite pattern tập hợp các đối tượng vào cấu trúc cây để thể hiện toàn bộ hoặc một phần hệ thống cấp bậc.

Composite pattern cho phép client xử lý các đối tượng riêng lẻ hoặc những đối tượng tập hợp theo cùng cách thức giống nhau.

2. Vấn đề thực tế

Tất cả chúng ta có lẽ không ai xa lạ với khái niệm Cây Thư mục. Theo đó, thư mục cha có thể có 1 hoặc nhiều thư mục con (composition object), thư mục cha cũng có thể có nhiều file (invidual object). Và trong mỗi thư  mục con lần lượt có những tính năng như thư mục cha.

Làm thế nào thể hiện cấu trúc thư mục trên trong lập trình?

Composite pattern sẽ giúp chúng ta giải quyết được vấn đề này.

3. Giải pháp

Đầu tiên chúng ta cần có 1 interface hoặc 1 abstract class AbstractNode quy định dạng chung nhất của 1 node (tạm hiểu là 1 phần tử đầu tiên của cây). Từ 1 node, chúng ta bắt đầu tạo ra các node khác. Để làm được điều này, interface phải có các chức năng cho phép người dùng thêm, bớt, sửa các node, và mỗi node có thể là node đơn hoặc là node tổng hợp (node có thể chứa các node khác). Các node này đều kế thừa AbstractNode để có thể thực hiện các chức năng mà AbstractNode đã quy định. Các node dạng composite sẽ có thêm tính năng add hoặc remove các node khác. Điều này giúp chúng ta có thể xây dựng được cấu trúc cây theo yêu cầu.

4. Mô hình



5. Code sample


6. Mối liên quan với các pattern khác

Không có nhận xét nào:

Đăng nhận xét