zoukankan      html  css  js  c++  java
  • 观察者模式

    被观察者

    所有被观察者都继承Observable接口 ( java标准库中Observable是一个抽象类)

    interface Observable{
        public void addObserver(Observer observer);
        public void deleteObserver(Observer observer);
        public void notifyObserver(String context);
    }
    class AA implements Observable,IHanFeiZi_3{
        //存放observer
        private ArrayList<Observer> observerList=new ArrayList<Observer>();
    
        @Override
        public void addObserver(Observer observer) {
            observerList.add(observer);
        }
    
        @Override
        public void deleteObserver(Observer observer) {
            this.observerList.remove(observer);
        }
    
        @Override
        public void notifyObserver(String context) {
            for(Observer observer:observerList){
                observer.update(context);
            }
        }
    
        @Override
        public void method1() {
          ...
        }
    
        @Override
        public void method2() {
          ...
        }
    }

    观察者

    所有的观察者都继承Observer接口

    interface Observer{
        public void update(String str);
    }
    class BB implements Observer{
        @Override
        public void update(String context) {
          ...
        }
    }

    场景

    public static void main(String[] args){
            Observer a1=new AA_1();
            Observer a2=new AA_2();
            Observer a3=new AA_1();
            BB bb=new BB();
    
            bb.addObserver(a1);
            bb.addObserver(a2);
            bb.addObserver(a3);
    
            bb.method1();
        }

    观察者模式的注意事项

    1. 需要注意效率问题
    2. 由于消息通知是顺序执行的, 如有需要, 可采用异步方式
    3. 消息不能无限制的传递下去, 一般而言, 在一个观察者模式中最多出现一个对象既是被观察者又是观察者. 否则程序的维护性会变得很差.
  • 相关阅读:
    NOIP 2016 提高组 复赛 Day2T1==洛谷2822 组合数问题
    Codevs 1710 == POJ 1190 生日蛋糕 == 洛谷P1731
    [网络流24题] COGS 750 栅格网络流
    [网络流24题] COGS 运输问题1
    狂K 线段树
    Graph coloring技能树
    智能体大赛酱油记
    graph coloring学习记录
    湖北省赛酱油记
    CCCC酱油记
  • 原文地址:https://www.cnblogs.com/fei-hsueh/p/6106298.html
Copyright © 2011-2022 走看看