Trang chủ Chuyên gia viết Behavioral Patterns – Observer

[Design Pattern] Behavioral Patterns – Observer

944
Observer pattern là một design pattern rất hay được sử dụng trong thực tế. Bài viết dưới đây sẽ giúp bạn hiểu rõ và nắm chắc cách triển khai công cụ hữu hiệu này trong Java.
Giới thiệu
Observer pattern thường được sử dụng khi một Object cần được giám sát bởi nhiều Observer khác. Khi Object thay đổi trạng thái, các Observer trên sẽ được thông báo và cập nhật tự động.
Class Diagram
Ưu điểm
  • Giảm sự phụ thuộc giữa các Object cần được theo dõi với các Observer.
  • Thêm hoặc bớt các Observer 1 cách tùy biến, mọi lúc và độc lập với nhau.
Nhược điểm
  • Thứ tự của việc thông báo các Observer là không phụ thuộc lẫn nhau.
  • Trong một số trường hợp nhất định việc thông báo đến toàn bộ các Observer là không cần thiết.
Triển Khai
Dựa vào class Diagram thì ta cần 1 interface Observer dùng để tạo lớp trừu tượng để theo dõi đối tượng Subject như sau:
Interface Subject là lớp đối tượng cần được theo dõi.Interface Subject có 3 method chính như sau:
  • Attach: thêm 1 đối tượng Observer vào danh sách các đối tượng đang theo dõi.
  • Detach: loại bỏ 1 đói tượng Observer khỏi danh sách các đối tượng đang theo dõi.
  • NotifyObserver: thông báo sự thay đổi đến các đối tượng trong danh sách theo dõi. Cụ thể như sau:
Khi đã dựng được 2 interface như trên, thì ta sẽ triển khai các lớp con tương ứng của chúng.
Ví dụ cụ thể, ta sẽ phân tích bài toán khi 1 trận bóng xảy ra. Khi có 1 bàn thắng thì ngay lập tức thông tin sẽ được thông báo đến các trang thông tin khác.
Tạo 1 class FootbalMatch gồm các thuộc tính homeScorehomeTeamName và awayScoreawayTeamName tương ứng với số bàn thắng của đội nhà, tên đội nhà và số bàn thắng của đội khách, tên đội khách:
Sau khi hoàn thành class FootballMatch, các class Observercũng sẽ được thực hiện như sau:
Sau khi đã dựng được toàn bộ các class cần thiết, chúng ta sẽ sử dụng chúng như sau:
Ứng dụng trong thực tế
Observer pattern hay được sử dụng trong các trường hợp sau:
  • Xử lí với EventJava Swing và .Net sử dụng Observer pattern để xử lí các event trên giao diện.
  • Mô hình MVC: Trong mô hình MVC thì View tương ứng là các Observer, còn Model là Subject.
Link tham khảo:
http://www.oodesign.com/observer-pattern.html
Dương Thanh Hải – FTI
Tin liên quan: