这次来看下观察者模式,先来看下类图:
在贴上具体代码:
/** * @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 Listcards; 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方法。