Java之观察者模式

1.概念

        定义一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

2.UML图

3.代码

复制代码
interface Subject 
{ 
   public void attach(Observer observer); 
   public void detach(Observer observer); 
   void notifyObservers(); 
} 

public class ConcreteSubject implements Subject
{
   private Vector observersVector = new Vector(); 

   public void attach(Observer observer) { 
       observersVector.addElement(observer); 
   } 

   public void detach(Observer observer){ 
       observersVector.removeElement(observer); 
   } 
   
   public void notifyObservers(){ 
       Enumeration enumeration = observersVector.clone()).elements();
       while (enumeration.hasMoreElements()){ 
        ((Observer)enumeration.nextElement()).update(); 
    } 
  } 
} 

public interface Observer { 
   void update(); 
} 
 
public class ConcreteObserver1 implements Observer{ 
   public void update() { 
     System.out.println("Obsver1 execute");
   } 
} 

public class ConcreteObserver2 implements Observer{ 
   public void update() { 
     System.out.println("Obsver2 execute");
   } 
} 

public class Main {   
    public static void main(String[] args) {   
        ConcreteSubject concreteSubject = new ConcreteSubject ();   

        ConcreteObserver1 observer1 = new ConcreteObserver1();   
        ConcreteObserver2 observer2 = new ConcreteObserver2();   

        generator.addObserver(observer1);   
        generator.addObserver(observer2);   
           
        concreteSubject.notifyObservers();  
    }   
}  
复制代码

4.应用场景

   当对一个对象的改变需要同时改变其它对象,依赖于它的对象都需要改变时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值