美文网首页设计模式收藏
Android设计模式:观察者模式

Android设计模式:观察者模式

作者: 搬码人 | 来源:发表于2022-01-18 10:39 被阅读0次

观察者模式

简介:一个对象状态改变时通知其他对象。

背景

现在Jack的水果店的某种水果卖的很好,现在已经短缺,但是已经有很多客户订购了该水果,所以需要水果到店时通知这些客户。

设计实现

image.png

代码实例

/**
 *@Description
 *@Author PC
 *@QQ 1578684787
 */
interface Observer {
    fun update()
}
class CustomerObserver(val name:String):Observer {
    override fun update() {
        println("${name}购买成功")
    }
}
abstract class Attention {
    //关注客户列表
    var observers:MutableList<Observer> = ArrayList()
    //关注客户
    fun add(observer: Observer){
        observers.add(observer)
    }
    //取消关注
    fun remove(observer: Observer){
        observers.remove(observer)
    }

    //发送通知
    abstract fun notifyObservers()

}
class MangoAttention:Attention() {
    override fun notifyObservers() {
        //遍历观察者集合,调用每一个客户的购买方法
        for (obs in observers){
            obs.update()
        }
    }
   fun perform(){
        notifyObservers()
    }

}

测试

class ObserverClient {
    companion object{
        @JvmStatic
        fun main(args: Array<String>) {
            val attention = MangoAttention()
            attention.apply {
                this.add(CustomerObserver("joker"))
                this.add(CustomerObserver("rose"))
                this.add(CustomerObserver("jetty"))
                this.add(CustomerObserver("mark"))
            }
            attention.perform()
        }
    }

}

测试结果


image.png

应用场景

1、当一个对象的改变需要通知其他对象改变时,而且它不知道具体有多少个对象有待改变时。
2、当一个对象必须通知其他对象,而它又不能假定其他对象是谁。
3、跨系统的信息交换场景,如信息队列、事件总线的处理机制。
在Android中的应用:Android中的许多控键都能设置监听者,其机制就是观察者模式。

优点

  • 解除观察者与主题之间的耦合。让耦合的双方都依赖于抽象,而不是依赖具体。从而使得各自的变化都不会影响另一边的变化。
  • 易于扩展,对同一主题新增观察者时无需修原有代码。

缺点

  • 依赖关系并未完全解除,抽象主题仍然依赖抽象观察者。
  • 使用观察者模式时需要考虑一下开发效率和运行效率的问题,程序中包括一个被观察者、多个观察者,开发、调试等内容会比较复杂。
  • 可能会引起多余的数据通知。

相关文章

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

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

  • Android 观察者模式

    Android 设计模式系列文章 Android 23种设计模式 前言 观察者模式是我们使用率比较高的一种模式了。...

  • 观察者设计模式

    每周学点Java设计模式__观察者设计模式 本次继续更新java23中设计模式之一——观察者模式。 观察者模式(有...

  • RxJava基础—观察者模式

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

  • 设计模式详解——观察者模式

    本篇文章介绍一种设计模式——观察者模式。观察者模式在Android中有着很多的应用,如按钮监听,接口回调以及很多流...

  • 设计模式02-观察者者设计模式

    [toc] 设计模式02-观察者者设计模式 主要来源Head First设计模式(书)观察者设计模式是JDK中使用...

  • RxJava设计模式与原理

    标准观察者设计模式 RxJava是一种特殊的观察者模式,首先我们先来看标准的观察者设计模式。在标准观察者模式中,存...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • Android 设计模式之简单工厂模式

    设计模式系列文章 Android 设计模式之单例模式 Android 设计模式之Builder模式 Android...

  • Guava源码分析——EventBus

    EventBus的设计理念是基于观察者模式的,可以参考设计模式(1)—观察者模式先来了解该设计模式。 1、程序示例...

网友评论

    本文标题:Android设计模式:观察者模式

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