下面我以大白话的讲述 跟大家分享一下观察者模式,
举个例子狗仔队和明星的关系,实际上他们之间是一种寄生的关系,没有明星就没有狗仔队的饭,没有狗仔队明星也火不了。怎末火呢,暗中操作 ,明星提前通知狗仔队我要去干嘛,你过来拍我,爆料,其实这就是一种观察者模式。
定义一个接口:gouzai
public interface Gouzai {
//发表微博的方法
void fabiaoweibo();
}
//小张gouzai的实现类
public class Xiaozhang implements Gouzai {
public void fabiaoweibo() {
System.out.println("发表文章");
}
}
//定义一个网红的接口
public interface Wanghong {
//遛狗方法
void liugou();
//张大爷出门遛狗通知狗仔
void addGouzai(Gouzai gouzai);
}
//张大爷是个网红
public class Zhangdaye implements Wanghong{
// 存放狗仔队接口
private List<Gouzai> gouzais=new ArrayList<>();
//张大爷出门遛狗 通知狗仔发表微博
public void liugou() {
System.out.println("张大爷出门遛狗了");
for (Gouzai gouzai : gouzais) {
gouzai.fabiaoweibo();
}
}
public void addGouzai(Gouzai gouzai) {
gouzais.add(gouzai);
}
}
接下类我们定义一个测试类
public class Test {
public static void main(String[] args) {
Zhangdaye zhangdaye = new Zhangdaye();
//张大爷出门遛狗通知狗仔 小张啊 我要出门遛狗了 赶紧来看看我
zhangdaye.addGouzai(new Xiaozhang());
//张大爷出门遛狗 小张发表微博
在我们看来 是有人监视着张大爷 出门就有人 偷拍他 实际上 是张大爷告诉狗仔 他要干什么事情的时候通知了 你一声
这个模式就叫做观察者模式。
zhangdaye.liugou();
}
}
以上仅仅个人一点理解 不足之处 大家多多指点