设计模式收藏

Android设计模式:观察者模式

2022-01-18  本文已影响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中的许多控键都能设置监听者,其机制就是观察者模式。

优点

缺点

上一篇 下一篇

猜你喜欢

热点阅读