Iterator: Lớp thuần ảo dựng định nghĩa một giao tiếp để truy xuất và duyệt qua cỏc thành phần.
ConcreteIterator: Cài đặt một giao tiếp Iterator và lƣu lại vị trớ hiện tại của đối tƣợng gộp.
Aggregate: Lớp thuần ảo dựng định nghĩa một giao tiếp để tạo một đối tƣợng Iterator.
ConcreteAggregate: Cài đặt một giao tiếp Iterator để trả về một thể hiện thuộc lớp ConcreteIterator.
1.3.7.3. Cỏc tỡnh huống ỏp dụng
Ta ỏp dụng mẫu này khi cần truy xuất đến nội dung của đối tƣợng thựng chứa mà khụng cần biết đến cấu trỳc bờn trong của thựng chứa.
Khi cú nhiều kiểu dữ liệu thựng chứa và ta muốn việc xột duyệt, truy xuất thựng chứa là nhƣ nhau.
1.3.7.4. Thuận lợi và hạn chế
Iterator cung cấp cho ta một cỏch duyệt ổn định, bất biến trờn tất cả cấu trỳc dữ liệu và sử dụng chung một giao diện lập trỡnh. Vỡ vậy mà mó chƣơng trỡnh đƣợc viết ra sẽ dễ đọc, dễ sử dụng lại.
Việc duyệt khụng chịu ảnh hƣởng nếu cú sự thay đổi cấu trỳc dữ liệu thựng chứa, do giao diện lập trỡnh dựng để duyệt là cố định nờn mó chƣơng trỡnh sẽ khụng bị ảnh hƣởng.
Iterator là mẫu rất thụng dụng, hầu hết cỏc thƣ viện thựng chứa đều cài đặt. Khi xõy dựng cấu trỳc dữ liệu, ta thƣờng gúi thựng chứa làm dữ liệu nội tại và cung cấp cỏc phƣơng thức để tƣơng tỏc. Với mẫu Iterator, ta cú thể xõy dựng đối tƣợng duyệt với cỏc luật phự hợp với bài toỏn đang giải quyết.
Ta cú thể tạo nhiều hơn một đối tƣợng duyệt Iterator cựng tƣơng tỏc trờn một Aggregate.
1.3.8. Mẫu Mediator (mẫu trung gian) 1.3.8.1. í nghĩa 1.3.8.1. í nghĩa
Mẫu Medicator đƣợc sử dụng để đơn giản hoỏ cỏc tƣơng tỏc, cỏc giao tiếp giữa cỏc đối tƣợng trong hệ thống. Thay vỡ để cỏc đối tƣợng tƣong tỏc với nhau một cỏch tuỳ ý thỡ Medicator tạo ra một lớp đối tƣợng trung gian nhằm quản lý cỏc tƣơng tỏc này.
Cú thể mụ tả cấu trỳc mẫu một cỏch khỏc nhƣ sau: