3.2. Các mẫu dáng thiết kế (Mẫu thiết kế)
3.2.5.1. CHAIN OF RESPONSIBILITY
3.2.5.1.1 Mục đích
Tránh tổ hợp nơi gửi các yêu cầu tới nơi nhận của nó bằng cách đưa ra hơn một đối tượng điểu kiện để nắm bắt yêu cầu. Tổ hợp các đối tượng nhận và chuyển yêu cầu dọc theo tổ hợp này tới khi một đối tượng nắm giữ được nó.
3.2.5.1.2 Ứng dụng:
Nhiều hơn một đối tượng có thể nắm giữ yêu cầu. Handler có thể được xây dựng một cách tự động.
Cần đưa ra một yêu cầu tới một trong nhiều đối tượng không cần xác định nơi nhận một cách rõ ràng.
Một tập các đối tượng mà có thể nắm giữ các yêu cầu nên được định nghĩa động. 3.2.5.1.3 Cấu trúc: C l i e n t Handler HanhdleRequest() Handler HanhdleRequest() Handler HanhdleRequest() successor
Cấu trúc đối tượng có thể được xem xét thông qua:
3.2.5.1.4 Thành phần:
Hander:
o định nghĩa một giao diện cho việc nắm giữ các yêu cầu.
o (optional) thực hiện kết nối kế tiếp. ConcreteHandler:
o Nắm giữ các yêu cầu nó chịu trách nhiệm tới.
o Có thể truy cập tới thành phần kế tiếp của nó.
o Nếu ConcreteHandler có thể nắm giữ các yêu cầu, nó cũng làm được, mặt khác nó hướng các yêu cầu tới thành phần kế tiếp của nó.
Client.
o khởi tạo cyờu cầu tới đối tượng ConcreteHandler trên chuỗi.
3.2.5.1.5 Kết quả Giảm thiểu sự kết hợp aClient aHandler aConcreteHandler successor aConcreteHanhdler successor
Thờm tính linh hoạt trong việc ấn định trách nhiệm tới các đối tượng. Chain of Responsibility đưa bạn thờm tớnh linh hoạt trong việc phân phối trách nhiệm giữa các đối tượng, có thể thêm vào hoặc thay đổi trách nhiệm chuỗi tại thời gian chạy.
Xác nhận không được đảm bảo : Từ lúc một yêu cầu không có nơi nhận chắc chắn, không có đảm bảo nếu nó được nắm giữ, yêu cầu có thể bị rơi xuống điểm cuối của chuỗi mà không được giữ. Một yêu cầu có thể không được nắm giữ khi chuỗi không được cấu hình đúng cách.
3.2.5.1.6 Cài đặt
Việc thực hiện một chuỗi kế tiếp.
Có hai cách để thực hiện một chuỗi thành công. Đó là: Xác định các liên kết mới, sử dụng kết nối hiện tại, kết nối các kế tiếp, biểu diễn các yêu cầu.