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();  
        }  
      
    }
    

      

  • 相关阅读:
    Java [leetcode 36]Valid Sudoku
    Java [leetcode 35]Search Insert Position
    java中正则表达式
    Java [leetcode 34]Search for a Range
    SSRS表达式里引用.net dll
    一个简单的批处理
    .NET大批量插入数据到Oracle
    AX2009里调用.NET DLL的效率问题
    生成折扣日记账
    python's twelth day for me
  • 原文地址:https://www.cnblogs.com/gxl00/p/5050551.html
Copyright © 2011-2022 走看看