Khái niệm:
Cung cấp một cách để truy xuất các thành phần của một đối tượng hợp
nhất một cách tuần tự mà không cho thấy representation bên dưới của nó
Mức độ sử dụng: cao
UML Class Diagram
Những lớp và/hoặc đối tượng trong mẫu thiết kế này:
- Iterator (AbstractIterator): định nghĩa một interface để truy xuất và đi qua các thành phần.
- ConcreteIterator (Iterator):
+ thực thi Iterator interface
+ theo dõi vị trí hiện tại trong phần giao nhau của tập hợp
- Aggregate (AbstractCollection): Định nghĩa một interface để tạo một đối tượng Iterator.
- ConcreteAggregate (Collection): thực thi interface tạo lập Iterator để trả về một đối tượng của ConcreteIterator riêng.
Iterator: khi nào sử dụng và sử dụng ở đâu
Công việc thường được thực hiện khi lập trình đó là xem xét và tính
toán tập hợp các đối tượng. Các tập hợp này có thể được lưu trữ bằng
mảng (array), danh sách (list) hoặc gì đó phức tạp hơn chẳng hạn như cấu
trúc cây hoặc đồ thị. Ngoài ra, bạn có thể cần truy xuất các item trong
tập hợp theo lệnh, chẳng hạn như từ trước ra sau, từ sau ra trước,
duyệt theo chiều sâu… Mẫu thiết kế Iterator giải quyết vấn đề này bằng
cách tách biệt tập hợp các đối tượng từ phần giao nhau của các đối tượng
này bằng việc thực thi một lớp iterator được chuyên biệt hóa.
Không những thế, bạn có thể tìm thấy mẫu thiết kế Interator sâu trong
các thư việc .NET, nó là một trong 2 mẫu thiết kế mà là một phần của
bản thân ngôn ngữ C# và VB (mẫu thiết kế khác là Observer). Cả hai ngôn
ngữ đều có một kiến trúc được xây dựng sẵn tạo điều kiện đổi các tập
hợp: foreach trong C# và For Each trong VB
Các đối tượng được tham chiếu trong “in” expression phải thực thi
IEnumerable interface để tập hợp các đối tượng có thể được truy xuất.
Demo
0 comments:
Post a Comment