zoukankan      html  css  js  c++  java
  • java学习笔记-设计模式16(观察者模式)

    意图

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

    public interface Observer {  
        public void update();  
    } 
    

      

    public class Observer1 implements Observer {  
      
        @Override  
        public void update() {  
            System.out.println("observer1 has received!");  
        }  
    } 
    

      

    public interface Subject {  
          
        /*增加观察者*/  
        public void add(Observer observer);  
          
        /*通知所有的观察者*/  
        public void notifyObservers();  
          
        /*自身的操作*/  
        public void operation();  
    } 
    

      

    public abstract class AbstractSubject implements Subject {  
      
        private Vector<Observer> vector = new Vector<Observer>();  
        @Override  
        public void add(Observer observer) {  
            vector.add(observer);  
        }  
      
        @Override  
        public void notifyObservers() {  
            Enumeration<Observer> enumo = vector.elements();  
            while(enumo.hasMoreElements()){  
                enumo.nextElement().update();  
            }  
        }  
    }  
    

      

    public class MySubject extends AbstractSubject {  
      
        @Override  
        public void operation() {  
            System.out.println("update self!");  
            notifyObservers();  
        }  
      
    } 
    

      

    public class ObserverTest {  
      
        public static void main(String[] args) {  
            Subject sub = new MySubject();  
            sub.add(new Observer1());  
              
            sub.operation();  
        }  
      
    }
    

      

  • 相关阅读:
    MongoDB学习笔记(查询)
    PHP IP地址转换
    PHP SESSION的工作原理解析(转)
    JavaScript 之 RegExp 对象
    jquery 几个实用的小方法
    JS之document.cookie随笔
    CodeForces
    CodeForces
    翻转 -- CodeForces
    Codeforces --- 982C Cut 'em all! DFS加贪心
  • 原文地址:https://www.cnblogs.com/gxl00/p/5050551.html
Copyright © 2011-2022 走看看