Nó là gì ?
Observer cho phép các đối tượng có thể lắng nghe và phản ứng khi có thông báo từ một đối tượng khác. Tức là khi một đối tượng gửi một thông báo, các đối tượng lắng nghe nó có thể phản ứng lại với thông báo đó.
Sử dụng khi nào ?
Khi bạn muốn các đối tượng liên lạc với nhau. Khi đối tượng này gửi 1 thông điệp thì các đối tượng đăng ký lắng nghe thông điệp sẽ phản ứng lại với thông điệp đó. Đối tượng gửi thông điệp sẽ không cần biết nó sẽ gửi cho ai và đối tượng nhận thông điệp sẽ không cần biết ai gửi thông điệp đó.
Dùng nó như thế nào ?
Giả sử trong một hệ thống bán hàng, mỗi khi có sản phẩm mới hệ thống sẽ thông báo cho tất cả các khách hàng quan tâm đến sản phẩm này. Đầu tiên tôi tạo ra một lớp interface với 1 phương thức sẽ phản ứng khi có sản phẩm mới .
- public interface Observer{
- void update(String message);//phương thức phản ứng lại khi nhận được thông báo.
- }
- public class Customer implements Observer{
- private String name;
- private int age;
- public Customer(String name, int age) {
- super();
- this.name = name;
- this.age = age;
- }
- @Override
- public void update(String message) {
- System.out.println(name + " " + message);
- }
- }
- public interface Subject {
- public void attachObserver(Observer observer);// thêm đối tượng đăng ký lắng nghe thông báo.
- public void detachObserver(Observer observer);// hủy đối tượng đăng ký lắng nghe thông báo
- public void notifyObserver();//thong bao đến tất cả các đối tượng đã đăng ký thông báo.
- }
- public class Product implements Subject{
- private List<Observer> obs = new ArrayList<Observer>();
- private String nameProduct;
- public Product(String nameProduct) {
- super();
- this.nameProduct = nameProduct;
- }
- @Override
- public void attachObserver(Observer observer) {
- obs.add(observer);
- }
- @Override
- public void detachObserver(Observer observer) {
- obs.remove(observer);
- }
- @Override
- public void notifyObserver() {
- for(Observer ob : obs){
- ob.update(nameProduct);
- }
- }
- }
- public class Main {
- public static void main(String[] args) {
- Customer cus1 = new Customer("Ti", 11);
- Customer cus2 = new Customer("Teo", 12);
- Product product1 = new Product("Laptop");
- product1.attachObserver(cus1);//cus1 dang ky phan ung khi có thông báo từ product
- product1.attachObserver(cus2);
- product1.notifyObserver();//thông báo đến tất cả các Observer.
- }
- }
Bài viết dễ hiểu. Nhưng sao sao ban không đưa ra luôn kết quả khi chạy cho hoàn chỉnh.
ReplyDeleteCảm ơn bạn.
This is an unprecedented article. Amazing insight you have on this, it's nice to find a website that details so much information about different artists.I am hoping the same best work from you in the future as well.
ReplyDeleteDiscount master app, Product discount master, autoketing app
I’d choose to make use of some with the content on my blog whether or not you don’t mind. I have visit so many time to this blog.Magnificent work.I trust you would not have reservations if I placed a link here?
ReplyDeletefacebook live chat help facebook inbox, autoketing.com
autoketing
ReplyDeleteShipping Bar for Shopify
Free shipping bar
It’s amazing too pay a visit this site and reading the views of all mates about this article,
while I aam also keen of getting knowledge.
You’ve made some decent points there. I looked on the internet for more information about the issue and found most people will go along with your views on this website.
ReplyDeleteautoketing
email with love download
email with love by autoketing
I really admire the writer of this post, hoping that the article will be more noticeable.
ReplyDeletecurrency converter box free, currency converter app download, best autoketing app
Excellent read, I just passed this onto a colleague who was doing a little study on that. And he actually bought me lunch because I found it for him smile So let me rephrase that: Thanks for lunch
ReplyDeleteShell Shockers Game
The-light-temple-fireboy-and-watergirl-2 Game
Sling-drift Game
Your posts are the flower of the flock.I decided to add your blog to my bookmarks so I can return to it at a later date.
ReplyDeletegame online Tomb Runner Mommy Elsa Baby Caring online game Blocky Craft Police Squad
This website basically beautiful points and things right.This was a wonderful site and I really enjoy it the data you shared.Cheers for sharing with us your wonderful blog.
ReplyDeletePapa's Scooperia free game to play online game Def Island Blocky Rabbit Tower best free game
ReplyDeletefood games online
basketball games free
soccer free online
This website basically beautiful points and things right.This was a wonderful site and I really enjoy it the data you shared.Cheers for sharing with us your wonderful blog.
free online juegos games
ReplyDeleteio jogos
2 player games for girl
I used to happily find this web-site. I anticipated that would an obligation of appreciation is all together for your possibility for this remarkable learn!! I unequivocally getting a charge out of every single bit of it and I've you bookmarked to take a gander at new stuff you blog. Thanks
ReplyDeleteFrozen Baby Care
Golf Is Hard
Santa World Cup Pk
I think this is a standout amongst the most critical data for me. What"s more, i"m happy perusing your article. Be that as it may, ought to comment on some broad things