java设计模式十五(观察者模式)

java设计模式—观察者模式

一.概述

在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。这有点像我们的maven,比如maven的pom.xml删除某个依赖包时,eclipse里的代码就会做出相应的错误提示。

二.应用场景

1.微信公众号服务,发布消息时,关注公众号就可以收到推送消息
2.微博的订阅,当我们订阅了某个人的微博账号,当这个人发布了新的消息,就会通知我们
3.订阅火车票之后,需要记录日志,也需要发送短信
4.事件消息

三.模式示例:

1.创建被观察者类

public class ObservableDemo extends Observable{
    private String message = "";
    public ObservableDemo(){ }

    public String getMessage(){
        return message;
    }
    public void setMessage(String message){
        if(!this.message.equals(message)){
            this.message = message;
            setChanged();  //标注已经被更改
            this.notifyObservers(message);  //通知观察者数据已被更改
        }
    }    
}

2.创建观察者类

public class ObserverDemo implements Observer{

    private String observerName;

    public  ObserverDemo(String observerName) { 
        this.observerName = observerName;
    }

    @Override
    public void update(Observable o, Object arg) { 
        if(o instanceof ObservableDemo){
            System.out.println(observerName + "新消息:"+arg);
        }
    } 
}

3.模式调用

public class Test {
    public static void main(String args[]){
        ObservableDemo observableDemo=new ObservableDemo();
        ObserverDemo A = new ObserverDemo("A");
        ObserverDemo B = new ObserverDemo("B");
        ObserverDemo C = new ObserverDemo("C");
        observableDemo.addObserver(A);
        observableDemo.addObserver(B);
        observableDemo.addObserver(C);

        observableDemo.addObserver(new Observer(){

            @Override
            public void update(Observable o, Object arg) {              
                System.out.println("new Observer");             
            }           
        });     
        observableDemo.setMessage("nihao1"); 
        observableDemo.setMessage("nihao1"); 
    }
}

猜你喜欢

转载自blog.csdn.net/xiaolicd/article/details/81380737
今日推荐