首页 > 其他 > 详细

设计模式——观察者模式

时间:2019-03-23 17:02:41      阅读:152      评论:0      收藏:0      [点我收藏+]

这次来看下观察者模式,先来看下类图:技术分享图片

在贴上具体代码:

/**
 * @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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!