版权声明:本文为博主原创文章,未经博主允许不得转载。 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")
}
}