这次来看下观察者模式,先来看下类图:
在贴上具体代码:
/**
* @Author:shenqi
* @Description: 银行主题
* @Date:2019/3/23 15:24
*/
public interface Bank {
void addCard(Card card);
void deleteCard(Card card);
void notifyCard(CardInfo cardInfo);
}
/**
* @Author:shenqi
* @Description: 爱存不存银行
* @Date:2019/3/23 15:23
*/
public class ICBCBank implements Bank {
private List<Card> cards;
public ICBCBank() {
this.cards = new ArrayList<>();
}
@Override
public void addCard(Card card) {
cards.add(card);
}
@Override
public void deleteCard(Card card) {
cards.remove(card);
}
@Override
public void notifyCard(CardInfo cardInfo) {
for (Card card : cards) {
card.update(cardInfo);
}
}
public void changeMoney(CardInfo cardInfo) {
notifyCard(cardInfo);
}
}
/**
* @Author:shenqi
* @Description: 银行卡
* @Date:2019/3/23 15:35
*/
public interface Card {
void update(CardInfo cardInfo);
}
/**
* @Author:shenqi
* @Description:
* @Date:2019/3/23 15:51
*/
public class FirstCard implements Card {
private Bank bank;
public FirstCard(Bank bank) {
this.bank = bank;
bank.addCard(this);
}
@Override
public void update(CardInfo cardInfo) {
System.out.println(cardInfo.getMoney() + "_" + cardInfo.getPassword());
}
}
那么来说明下:
1.如果有多张爱存不存的银行卡,就直接订阅爱存不存银行就行。
2.除了银行推给你的方式,还有自己拉的方式,无非就是在爱存不存银行中加入一个get方法。
原文:https://www.cnblogs.com/shenqiaqia/p/10584462.html