概念:
定义对象间的一种一对多依赖关系,是的没当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。
“张三欠了赵四、王五、老八、铁柱等一干人很多钱,张三没钱还,所以跑路了,但是张三是个很诚信的人,一旦有了钱肯定会还钱,如果这一干人每天都去问张三有没有钱,张三会烦死,张三说,哪天有了钱我一个一个的通知你们来拿钱,不要天天来问我了 ”。这就是观察者模式。
于是就是下面这样,张三和债主子的关系就构成了观察者模式。
代码如下:
interface Debit{
void borrow(Credit credit);
void notifyCredits();
}
class ZhangSan implments Debit{
ArrayList<Credit> credits = new ArrayList<>();
@Override
public void borrow(Credit credit){
credits.add(credit);
}
@Override
public void notifyCredits(){
credits.forEach(credit -> credit.takeMoney());
}
}
interface Credit{
void takeMoney();
}
class LiSi implments Credit{
@Override
public void takeMoney(){
Sysytem.out.println("李四取钱~")
}
}
//观察者
class Observer{
public static void main(String[] args){
Debit zhangSan = new ZhangSan();
zhangSan.borrow(new LiSi());
//通知所有人来取钱~
zhangSan.notifyCredits();
}
}