美文网首页
观察者模式(用做自己备忘,你们就别看了。。。太丑)

观察者模式(用做自己备忘,你们就别看了。。。太丑)

作者: 偷的浮生整日闲 | 来源:发表于2019-07-24 11:23 被阅读0次

概念

正如字面意思,这是一种观察者的模式,被观察者(observable)做了某件事(调用方法||函数)后会立即通知观察者(observer),观察者知道后采取某些行动(调用方法||函数)。

目标

一般场景是,有多个观察者,去观察一个被观察者。

实现方式

1,首先,需要2个接口,一个被观察者接口,一个观察者接口,被观察者接口需要实现添加观察者(add),删除观察者(del),通知观察者(notify)方法,观察者接口需要实现更新(updata)方法。
2,其次,被观察者需要实现被观察接口,观察者需实现观察者接口;
3,最后,在应用场景(mian)中,实例化被观察者类,观察者类,并运行。


image.png

文件结构图:


image.png

代码:

observable接口:

public interface Observable{
   public void addObservers(Observer ob);
   public void delObservers(Observer ob);
   public void notifyObservers(Object object);
}

Observable实现类:

//被观察者实例
public class ObservableInstance implements Observable {
    private ArrayList<Observer> obList=new ArrayList<Observer>();

    public void addObservers(Observer o) {
        obList.add(o);
    }
    public void delObservers(Observer o) {
        obList.remove(o);
    }
    public void notifyObservers(Object obj) {
        for (Observer o : obList) {
            o.update(obj);
        }
    }
    public void dosomething() {
        System.out.println("我要开始行动了!!");
        this.notifyObservers("被观察者行动了");
    }
}

Observer接口:

//观察者接口
public interface Observer {
    public void update(Object ob);
}

Observer实现类:

//观察者1号
public class ObserverInstance1 implements Observer {

    public void update(Object ob) {
        System.out.println("观察者1观察到了————————"+ob.toString());
    }
}

Observer实现类:

//观察者2号
public class ObserverInstance2 implements Observer {

    public void update(Object ob) {
        System.out.println("观察者2观察到了————————"+ob.toString());
    }
}

应用场景类:

//应用场景类
public class main {
    public static void main(String[] args) {
        ObservableInstance observableInstance=new ObservableInstance();
        ObserverInstance2 observerInstance2=new ObserverInstance2();
        ObserverInstance1 observerInstance1=new ObserverInstance1();
        observableInstance.addObservers(observerInstance2);
        observableInstance.addObservers(observerInstance1);
        observableInstance.dosomething();
    }
}

扩展

java中有java.util.Observable实现类和java.util.Observer实现类,这两个类已经将被观察者的三个接口和观察者的一个接口实现了,继承这两个类便可实现观察者模式,继承Observable的类不需要去实现添加,删除,通知接口,方便实现。

相关文章

  • 观察者模式(用做自己备忘,你们就别看了。。。太丑)

    概念 正如字面意思,这是一种观察者的模式,被观察者(observable)做了某件事(调用方法||函数)后会立即通...

  • 设计模式| 行为型模式 (下)

    前言 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、解释器模式、责任链模式、命令模式、备忘...

  • 设计模式| 行为型模式 (上)

    前言 行为型模式共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、解释器模式、责任链模式、命令模式、备忘录...

  • 【设计模式】行为型设计模式汇总(二)

    行为型设计模式范围 观察者模式 模板方法 策略模式 职责链模式 状态模式 迭代器模式 访问者模式 备忘录模式 命令...

  • 【设计模式】行为型设计模式汇总(一)

    行为型设计模式范围 观察者模式 模板方法 策略模式 职责链模式 状态模式 迭代器模式 访问者模式 备忘录模式 命令...

  • 行为型模式

    行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、...

  • 设计模式 (行为型模式)

    共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、...

  • 设计模式:行为型

    常用 观察者模式 策略模式 模版方法模式 迭代器模式 责任链模式 其他 命令 状态 解释器 访问者 中介者 备忘录

  • Java开发中的23种设计模式详解3

    第三种设计模式——行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘...

  • ios设计模式2016

    主要有三大分类:3个创造型:单例、工厂模式、抽象工厂模式4个动作型:观察者模式、备忘录模式、责任链模式和命令模式5...

网友评论

      本文标题:观察者模式(用做自己备忘,你们就别看了。。。太丑)

      本文链接:https://www.haomeiwen.com/subject/piutrctx.html