首页 > 技术文章 > 观察者设计模式

q1359720840 2021-05-13 22:06 原文

观察者设计模式

监听目标对象改变状态

关键词: Observable 和 Observer

 package com.player3.java.observer;
 import java.util.Observable;
 /**
  * 观察者类
  */
 public class Subject extends Observable
 {
     private  Integer state;
     public Subject(int i) {
         this.state=i;
    }
     public Integer getState() {
         return state;
    }
     public void setState(Integer state) {
         this.state = state;
         //状态改变
         this.setChanged();
         //推送
         this.notifyObservers(state);
       //拉取
        // this.notifyObservers();
    }
 }
 
 package com.player3.java.observer;
 import java.util.Observable;
 import java.util.Observer;
 public class ConcreteObserver  implements Observer {
     public static void main(String[] args) {
         Subject subject = new Subject(0);
         ConcreteObserver concreteObserver = new ConcreteObserver();
         subject.addObserver(concreteObserver);
         subject.setState(1);
         subject.setState(2);
    }
     /**
      * 更新会调用这个方法
      * @param o 更新的对象
      * @param arg 更新的字段
      */
     public void update(Observable o, Object arg) {
      Subject su=   (Subject)o;
         Integer state1 = su.getState();
         Integer state=(Integer)arg;
         System.out.println(state);
    }
 }

基于 zookeeper做分布式锁

1.系统a尝试获取zookeeper上的一个锁,获取到了。

2.系统b尝试获取锁,被a锁了,b在zookeeper注册监听器,一旦a释放了送,通知b,b尝试重新上锁。

 

 

推荐阅读