Tôi muốn nói đó là tính năng không thực sự nổi bật Chain Of Responsibility
. Lý do duy nhất bạn cần một con trỏ quay trở lại cấu trúc vùng chứa cha mẹ của bạn là đặt chức năng vùng chứa mẹ trong phạm vi tiếp cận của các phần tử được chứa. Do đó, có thể được xem là chi tiết triển khai được yêu cầu để cho phép yêu cầu lừa "chuỗi" cho đến khi được xử lý ở cấp "chính xác".
Với mối quan hệ chứa/chứa, mức "chính xác" chỉ là một cấp và mức tăng lên không đủ thông qua (vì chỉ có một cấp) để tạo ra nhiều sở thích như một ví dụ lý tưởng về mô hình. Tuy nhiên, các ý tưởng chung đằng sau Chain of Responsibility
vẫn giữ; một yêu cầu được thực hiện tại một điểm trong chuỗi mà không thể xử lý nó, và được xử lý tại một điểm khác nhau trong sự thay đổi có thể.
Với mối quan hệ chứa/không chứa chung nhỏ, khớp nối của chuỗi liên kết hai này có thể khá chặt chẽ. Ví dụ, các ví dụ của bạn thiếu khung xử lý "lệnh" chung (vì tập hợp ngôn ngữ lệnh là nhỏ), và khung như vậy thường yêu cầu (đối với an toàn kiểu) đối tượng Command/Message. Đó là rất nhiều chi phí, cho một danh sách mà chỉ muốn để cho nó các yếu tố trực tiếp thông báo ở cấp độ phần tử mà họ muốn được loại bỏ khỏi danh sách.
Và có, there is a C2 pattern's page for it ... Nếu bạn đồng ý với lý do của tôi.
Nguồn
2012-02-16 23:08:55
Chỉ cần thêm vào danh sách của bạn, Windows có macro tương tự 'CONTAINING_RECORD'. Tôi không biết tên chung cho 'mẫu'. –
Khi được sử dụng để triển khai cấu trúc dữ liệu vùng chứa, hãy tăng cường gọi kỹ thuật này là "thùng chứa xâm nhập" trong thế giới C++. Mặc dù container_of tổng quát hơn và hữu ích trong các ngữ cảnh khác hơn là triển khai các cấu trúc dữ liệu chung như danh sách và bảng băm. – nos