观察者模式(Kotlin)学习心得

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Duckdan/article/details/84951094

一、被观察者(Demo中的角色:ZhengFuObservable)

(ZhengFuObservable)政府相关政策发生改变,立即通知它的观察者。具体源码实现如下所示:
package com.study.observer

import java.util.*

class ZhengFuObservable : Observable() {
    /**
     * 政策更新
     */
    fun policyUpdate(policy: String) {
        println("政府政策改变了")
        //通知改变
        setChanged()
        notifyObservers(policy)
    }
    
    /**
     * 政策修改
     */
    fun policyCancel(policy: String) {
        println("政府政策取消了")
        //通知改变
        setChanged()
        notifyObservers(policy)
    }

}

二、观察者(Demo中的角色:MaYun、MaHuaTeng、LiYanHong)

相关观察者接受到通知之后,根据自身需求展开相应逻辑处理。具体源码实现如下所示:
package com.study.observer

import java.util.*

/**
 * 观察者马云,如果被观察者发出通知,自己相应的处理
 */
class MaYun : Observer {

    override fun update(o: Observable?, arg: Any?) {
        notifyAlibabaCompany(arg.toString())
    }

    /**
     * 通知本公司员工政策的改变
     */
    fun notifyAlibabaCompany(msg: String) {
        println("阿里巴巴员工::$msg")
    }

}
package com.study.observer

import java.util.*

/**
 * 观察者马化腾,如果被观察者发出通知,自己相应的处理
 */
class MaHuaTeng : Observer {

    override fun update(o: Observable?, arg: Any?) {
        notifyTencentCompany(arg.toString())
    }

    /**
     * 通知本公司员工政策的改变
     */
    fun notifyTencentCompany(msg: String) {
        println("腾讯员工::$msg")
    }

}
package com.study.observer

import java.util.*

/**
 * 观察者李彦宏,如果被观察者发出通知,自己相应的处理
 */
class LiYanHong : Observer {

    override fun update(o: Observable?, arg: Any?) {
        notifyBaiDuCompany(arg.toString())
    }

    /**
     * 通知本公司员工政策的改变
     */
    fun notifyBaiDuCompany(msg: String) {
        println("百度员工::$msg")
    }
}

三、运行结果

猜你喜欢

转载自blog.csdn.net/Duckdan/article/details/84951094