//也可理解为,当WorkMaster状态发生改变时,所有依赖于他的对象都会接收到通知
struct LocalWorker {} impl Worker for LocalWorker { fn on_new_work( & self, work: Work) { println !( " local worker receiver new work {:?} " , work) } } struct RemoteWorker {} impl Worker for RemoteWorker { fn on_new_work( & self, work: Work) { println !( " remote worker receive new work {:?} " , work) } }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn observer_mode_test() {
let mut master = WorkMaster{workers: Vec::new()};
let local_worker = LocalWorker{};
let remote_worker = RemoteWorker{};
master.register_worker(Box::new(local_worker));
master.register_worker(Box::new(remote_worker));
// local worker receiver new work Work { id: 1 }
// remote worker receive new work Work { id: 1 }
master.dispatch_new_work(Work{id: 1});
}
}
WorkMaster通过关联函数dispatch_new_work,通知接收者自己状态发生了改变。
DBA学RUST设计模式--观察者模式
标签:div color 方法 int 发送 观察者模式 自己 实例 remote
查看更多关于DBA学RUST设计模式--观察者模式的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did116785