Observer Là Gì

  -  

Ý Đồ

Observer là 1 trong những behavioral design pattern (sau đây hotline tắt là DP) dùng làm định nghĩa một cơ chế đăng ký (subscribe) nhằm mục tiêu thông báo (notify) mang lại nhiều đối tượng về các sự kiện xẩy ra với đối tượng mà chúng đang quan ngay cạnh (observe).

Bạn đang xem: Observer là gì

*

Vấn đề

Tưởng tượng rằng chúng ta có hai loại đối tượng: khách hàng và cửa ngõ hàng. Quý khách rất để ý đến một thương hiệu sản phẩm cụ thể (giả sử là 1 trong mẫu iPhone mới) sẵn sàng được bày buôn bán tại cửa hàng.

Khách hàng rất có thể ghé thăm siêu thị mỗi ngày để kiểm soát đã có sản phẩm chưa. Tuy nhiên trong khi thành phầm vẫn không được tung ra, đa số những chuyến hành trình tới shop này vẫn là vô nghĩa.

*

Mặt khác, cửa hàng hoàn toàn có thể gửi hàng tấn e-mail (mà đã có quý khách nghĩ là thư rác) đến tất cả quý khách hàng mỗi lúc có thành phầm mới. Điều này để giúp một số người sử dụng đỡ đề nghị mất công đến shop vô số lần, tuy nhiên, đồng thời, vấn đề đó sẽ làm tức giận những quý khách khác không quan tâm đến sản phẩm mới.

Có vẻ như tất cả một sự xung đột xẩy ra ở đây. Hoặc là quý khách lãng phí thời hạn kiểm tra xem thành phầm đã có hàng xuất xắc chưa, hoặc là shop lãng phí tổn nguồn lực khi thông tin cho quý khách hàng không ao ước nhận thông báo.

Giải pháp

Đối tượng mà lại có một số trong những trạng thái mà đối tượng người sử dụng khác thân thương thường được call là subject, nhưng bởi vì nó cũng trở thành thông báo đến các đối tượng người dùng khác về những chuyển đổi đối với trạng thái của nó, chúng tôi sẽ call nó là publisher. Tất cả các đối tượng người dùng khác mong theo dõi các thay đổi đối với trạng thái của publisher được call là subscribers.

Observer DP nhắc nhở rằng họ nên thêm phép tắc subscribe vào class quảng cáo online để các đối tượng người tiêu dùng riêng lẻ rất có thể subscribe hoặc hủy subscribe ngoài luồng sự kiện đến từ publisher đó. Nghe có vẻ phức tạp, nhưng thực tế sẽ đơn giản dễ dàng hơn chúng ta nghĩ đấy

*

Giờ đây, bất cứ khi nào một sự kiện đặc biệt xảy ra cùng với publisher, quảng cáo online sẽ chạy qua mảng subscriber cùng gọi cách tiến hành thông báo ví dụ của các đối tượng người sử dụng ấy.

Các ứng dụng thực hoàn toàn có thể có hàng chục class subscriber không giống nhau quan tâm đến việc theo dõi các sự khiếu nại của và một class publisher. Trong trường đúng theo này, họ không buộc phải couple quảng cáo trên internet vào tất cả các class đó. Bên cạnh đó, bạn cũng có thể thậm chí không biết trước về một vài trong số phần đa class kia nếu class publisher của chúng ta viết ra với mục tiêu được fan khác sử dụng.

Đó là lý do tại sao điều quan trọng là toàn bộ các subscriber phải implement thuộc một giao diện và quảng cáo online chỉ tiếp xúc với những subscriber qua đồ họa đó. Hình ảnh này nên khai báo phương thức thông báo cùng với cùng một tập hợp những tham số cơ mà publisher rất có thể sử dụng nhằm chuyển một vài dữ liệu theo ngữ cảnh cùng rất thông báo.

*

Nếu áp dụng của bạn có rất nhiều loại publisher khác nhau và bạn có nhu cầu làm cho subscriber tương hợp với toàn bộ các publisher, bạn cũng có thể làm cho toàn bộ các quảng cáo online follow cùng một giao diện. đồ họa này chỉ cần mô tả một số phương thức subscribe. Giao diện sẽ được cho phép subscriber quan ngay cạnh trạng thái của quảng cáo trên internet mà ko couple đến các class rõ ràng của publisher.

Ví von với thực tế

*

Nếu chúng ta subscribe một tờ báo hoặc tạp chí, bạn không cần thiết phải đến shop để bình chọn xem số tiếp theo sau đã tất cả hay không. Rứa vào đó, nhà xuất phiên bản sẽ gửi các số báo bắt đầu trực kế tiếp hộp thư của người sử dụng ngay sau khoản thời gian xuất bản hoặc thậm chí còn trước.

Xem thêm: Cung Phi Là Gì - Phân Biệt Mệnh Cung Phi Với Mệnh Cung Sinh

Nhà xuất phiên bản giữ danh sách những người dân đăng cam kết và biết họ suy nghĩ tạp chí nào. Người đăng ký hoàn toàn có thể rời ngoài danh sách bất kỳ lúc nào khi họ không thích nhà xuất bạn dạng gửi các số tạp chí new cho bọn họ nữa.

Cấu trúc

*

Publisher bắn những sự kiện nhưng mà các đối tượng người dùng khác quan tiền tâm. đầy đủ sự khiếu nại này xảy ra khi publisher biến đổi trạng thái hoặc thực hiện một số trong những hành vi. Advertiser có phương pháp subscribe được cho phép đối tượng ra/vào danh sách subscriber.

Khi một sự kiện mới xảy ra, advertiser duyệt qua danh sách subscriber và gọi phương thức thông tin được khai báo trong đồ họa subscriber của từng đối tượng người sử dụng subscriber.

Giao diện Subscriber khai báo đồ họa thông báo. Trong phần lớn các trường hợp, nó bao gồm chỉ một phương thức là update. Phương thức có thể có một số trong những tham số cho phép publisher pass một số cụ thể sự kiện cùng với sự kiện cập nhật.

Class Subscriber cụ thể thực hiện tại một số hành vi để phản hồi lại các thông tin do quảng cáo trên internet đưa ra. Tất cả các lớp này nên implement thuộc một bối cảnh để publisher không hẳn couple với những class gắng thể.

Thông thường, subscriber cần một vài thông tin theo ngữ cảnh để giải pháp xử lý sự kiện update một cách bao gồm xác. Vì lý do này, advertiser thường chuyển một vài dữ liệu ngữ cảnh làm cho param của cách làm thông báo. Publisher rất có thể pass bao gồm nó như 1 param, cho phép subscriber thẳng fetch ngẫu nhiên dữ liệu nào nhưng mà nó cần.

Client tạo các đối tượng người dùng publisher cùng subscriber lẻ tẻ và sau đó subscribe subscriber vào quảng cáo trên internet để lắng tai các cập nhật của publisher.

Giả mã

Danh sách subscriber được biên dịch động: Các đối tượng người sử dụng có thể bước đầu hoặc ngừng nghe thông tin tại runtime, tùy trực thuộc vào hành vi ước muốn của áp dụng của bạn.

Trong cách xúc tiến này, class editor không tự lưu list subscribe. Nó ủy thác công việc này cho đối tượng người tiêu dùng helper đặc biệt quan trọng dành riêng biệt cho bài toán đó. Chúng ta có thể nâng cấp đối tượng người tiêu dùng đó để phát triển thành nó thành một sự kiện dispatcher tập trung, cho phép ngẫu nhiên đối tượng nào hoạt động như một publisher.

Xem thêm: Cách Chỉnh Chơi Game Full Màn Hình Win 10, Hướng Dẫn Chơi Game Full Màn Hình Win 10

Việc thêm subscriber bắt đầu vào công tác không yêu thương cầu đổi khác đối với các lớp quảng cáo trên internet hiện có, miễn là chúng chuyển động với toàn bộ subscriber thông qua cùng một giao diện.