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