ObserverPattern(观察者模式)

Posted 麦子TMAC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ObserverPattern(观察者模式)相关的知识,希望对你有一定的参考价值。

import java.util.ArrayList;
import java.util.List;

/**
 * 观察者模式
 * @author TMAC-J
 * 牵一发而动全身来形容观察者模式在合适不过了
 * 分为拉模式和推模式,这里不详细说了
 */
public class ObserverPattern {
    
    interface IObserved{
        
        void addObserver(IObserver observer);
        
        void removeObserver(IObserver observer);
        
        void notifyObservers(); 
    } 
    
    public class Observed implements IObserved{

        private List<IObserver> observers = new ArrayList<IObserver>();
        
        @Override
        public void addObserver(IObserver observer) {
            observers.add(observer);
            
        }

        @Override
        public void removeObserver(IObserver observer) {
            observers.remove(observer);
        }

        @Override
        public void notifyObservers() {
            for(IObserver observer:observers){
                observer.update();
            }
        }
        
    }
    
    interface IObserver{
        
        void update();
        
    }
    
    public class Observer implements IObserver{

        @Override
        public void update() {
            System.out.println("do update...");
        }
        
    }
    
    public void test(){
        IObserved observed = new Observed();
        IObserver observer = new Observer();
        observed.addObserver(observer);
        observed.notifyObservers();
    }
    
}

 

以上是关于ObserverPattern(观察者模式)的主要内容,如果未能解决你的问题,请参考以下文章

设计模式 - 学习笔记 - 观察者模式ObserverPattern

C++观察者模式(发布-订阅)的使用

C++观察者模式(发布-订阅)的使用

C++观察者模式(发布-订阅)的使用

观察者模式(Observer Pattern)

案例分析:设计模式与代码的结构特性