Mẫu quan sát (Observer Pattern)

Một phần của tài liệu Mẫu thiết kế và ứng dụng phát triển hệ thống thông tin quản lý xuất nhập và tồn kho trong hoạt động Logistics (Trang 33 - 35)

Mẫu quan sát định nghĩa mối quan hệ phụ thuộc một – nhiều giữa các đối tượng sao cho khi một đối tượng thay đổi trạng thái thì tất cả các đối tượng liên quan cũng sẽ thông báo và tự động cập nhật theo.

Việc phân chia hệ thống thành nhiều lớp con có quan hệ với nhau là nhu cầu tất yếu có thể duy trì sự bền vững của hệ thống. Chúng ta không bao giờ muốn cài đặt hệ thống mà tất cả các lớp dính chặt lại với nhau, bởi vì điều này sẽ làm giảm tính tái sử dụng lại của chúng.

Ví dụ, nhiều công cụ giao diện đồ họa phân tách giao diện (GUI) ra khỏi dữ liệu bên dưới. Các lớp định nghĩa cho giao diện và dữ liệu trên có thể kết hợp với nhau để làm việc cũng như có thể được sử dụng 1 cách độc lập.

Mẫu quan sát mô tả cách thiết lập mối quan hệ này. Có hai đối tượng then chốt trong mẫu này, đó là Subject và Observer. Một đối tượng Subject có thể có một hoặc nhiều đối tượng Observer phụ thuộc vào nó. Tất cả các đối tượng Observer sẽ được cảnh báo (notify) khi đối tượng Subject có sự thay

- 34 –

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

đổi về trạng thái. Khi đó, các đối tượng Observer sẽ lấy thông tin về trạng thái của đối tượng Subject để tự cập nhật lại trạng thái của chính nó.

* Cấu trúc của mẫu Observer

Ở cấu trúc trên, khi khởi tạo một đối tượng thuộc lớp ConcreteObserver thì sự khởi tạo này phải dựa trên đối tượng thuộc lớp ConcreteSubject để lấy thông tin trạng thái hiện tại của đối tượng Subject. Đặc biệt của mẫu này là sự ánh xạ qua lại giữa đối tượng thuộc lớp Subject và các đối tượng thuộc lớp Observer. Đối tượng ConcreteObserver sẽ giữ con trỏ của đối tượng ConcreteSubject. Ngược lại lớp cha của lớp ConcreteSubject (lớp Subject) sẽ giữ một mảng các con trỏ đến lớp Observer (lớp cha của lớp ConcreteObserver).

* Phạm vi ứng dụng mẫu

- 35 –

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Khi áp dụng có mối quan hệ phụ thuộc, đối tượng này phụ thuộc vào đối tượng kia.

Khi một sự thay đổi ở đối tượng này dẫn đến sự thay đổi ở đối tượng khác và chúng ta không biết chính xác có bao nhiêu đối tượng phải thay đổi theo.

Một phần của tài liệu Mẫu thiết kế và ứng dụng phát triển hệ thống thông tin quản lý xuất nhập và tồn kho trong hoạt động Logistics (Trang 33 - 35)