观察者模式
观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。
观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。
案例
粉丝关注主播,主播开始直播时会向所以粉丝发送消息
主播:
java
public abstract class AbstractTikTok {
List<AbstractFan> list = new ArrayList<>();
abstract void notify(String msg);
abstract void addFans(AbstractFan fan);
}
java
public class MMTikTok extends AbstractTikTok{
public void sell(){
System.out.println("开始卖货。。");
notify("直播开始啦。。");
}
@Override
void notify(String msg) {
list.forEach(fan -> fan.acceptMsg(msg));
}
@Override
void addFans(AbstractFan fan) {
list.add(fan);
}
}
粉丝:
java
public abstract class AbstractFan {
abstract void acceptMsg(String msg);
abstract void follow(AbstractTikTok tikTok);
}
java
public class ManFan extends AbstractFan{
@Override
void acceptMsg(String msg) {
System.out.println("监听到消息:"+msg);
}
@Override
void follow(AbstractTikTok tikTok) {
tikTok.addFans(this);
}
}
测试:
java
public class Main {
public static void main(String[] args) {
MMTikTok mmTikTok = new MMTikTok();
ManFan fan1 = new ManFan();
ManFan fan2 = new ManFan();
fan1.follow(mmTikTok);
fan2.follow(mmTikTok);
mmTikTok.sell();
}
}