美文网首页
9.观察者模式

9.观察者模式

作者: 未知的证明 | 来源:发表于2019-07-11 22:38 被阅读0次

观察者模式:顾名思义,其实就类似于监听器一样,当被观察者发生了变化,观察者能发出相应的响应。

1、定义:

定义对象之间的一种一对多的依赖关系,当一个对象状态发生改变时,其相关依赖的对象将被通知并自动更新。

2、模式结构:

(1)Subject(目标类):定义观察者集合。提供接口增加或删除观察者对象,定义通知方法。
(2)ConcreteSubject(具体目标):目标类子类,负责向各个观察者通知。
(3)Observer(观察者类):对所观察的目标的改变做出反应。
(4)ConcreteObserver(具体观察者):实现更新数据的方法。

3、案例分析:

(猫、老鼠和狗之间的关系:猫是目标,狗和老鼠是观察者)
(1)抽象目标类 AniSubject

public abstract class AniSubject
{
    protected ArrayList observers = new ArrayList();//用于存放多个观察者
    //注册方法
    public void attach(AniObserver observer)
    {
        observers.add(observer);
    }
    //注销方法
    public void detach(AniObserver observer)
    {
        observers.remove(observer);
    }
    //抽象通知方法
    public abstract void action();
}

(2)具体目标类 Cat

public class Cat extends AniSubject
{
    public void action()
   {
    System.out.println("猫叫!!!");
 
    for(Object obs:observers)
    {
        ((AniObserver)obs).response();
    }
   }

(3)抽象观察者类 AniObserver

public interface AniObserver
{
  public void response();
}

(4)具体观察者类 Mouse

public class Mouse implements AniObserver
{
    public void response()
    {
        System.out.println("老鼠赶紧逃跑!!!");
    }
}

(5)具体观察者类 Dog

public class Dog implements AniObserver
{
    public void response()
    {
        System.out.println("狗跟着叫!!!");
    }
}

(6)测试类


public class Client
{
    pblic static void main(String [] args)
    {
        AniSubject sub = new Cat();
 
        AniObserver obs1,obs2,obs3;
        obs1 = new Mouse();
        obs2 = new Dog();
 
        sub.attach(obs1);
        sub.attach(obs2);
 
        sub.action();
    }
}

4、模式优缺点:

(1)优点:将表示层和数据逻辑层分离,在观察目标和观察者之间建立抽象的耦合。

(2)缺点:若观察者过多,通知过程耗时。会有导致系统崩溃的可能性出现。

5、模式应用:

(1)Java语言提供对观察者模式的支持:在 JDK 的 java.util 包中,提供 Observable 类和 Observer 接口。

(2)MVC 架构模式使用了该模式,观察目标就是 Model ,观察者就是 View, Controller 为两者之间的中介。

相关文章

  • 9.观察者模式

    观察者模式:顾名思义,其实就类似于监听器一样,当被观察者发生了变化,观察者能发出相应的响应。 1、定义: 定义对象...

  • 11.9设计模式-观察者模式-详解

    设计模式-观察者模式 观察者模式详解 观察者模式在android中的实际运用 1.观察者模式详解 2.观察者模式在...

  • RxJava基础—观察者模式

    设计模式-观察者模式 观察者模式:观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式...

  • 前端面试考点之手写系列

    1、观察者模式 观察者模式(基于发布订阅模式) 有观察者,也有被观察者。 观察者需要放到被观察者列表中,被观察者的...

  • RxJava 原理篇

    一、框架思想 观察者模式观察者自下而上注入被观察者被观察者自上而下发射事件观察者模式 装饰器模式自上而下,被观察者...

  • 观察者模式

    观察者模式概念 观察者模式是对象的行为模式,又叫作发布-订阅(publish/subscrible)模式。 观察者...

  • 设计模式-观察者模式

    观察者模式介绍 观察者模式定义 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为...

  • 观察者模式

    观察者模式 观察者模式的定义 观察者模式(Observer Pattern)也叫做发布订阅模式(Publish/s...

  • iOS设计模式之观察者模式

    观察者模式 1、什么是观察者模式 观察者模式有时又被称为发布(publish)-订阅(Subscribe)模式、模...

  • 观察者模式和发布订阅模式区别

    观察者模式 所谓观察者模式,其实就是为了实现松耦合(loosely coupled)。 在观察者模式中,观察者需要...

网友评论

      本文标题:9.观察者模式

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