当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。如,当一个对象被修改时,则会自动通知依赖它的对象

    观察者模式 - 图1

    1. class ObserverPattern {
    2. public static void main(String[] args) {
    3. Debit zhangSan = new ZhangSan();
    4. zhangSan.borrow(new WangWu());
    5. zhangSan.borrow(new ZhaoSi());
    6. // state改变
    7. zhangSan.notifyCredits();
    8. }
    9. }
    10. interface Debit {
    11. void borrow(Credit credit);
    12. void notifyCredits();
    13. }
    14. class ZhangSan implements Debit {
    15. private List<Credit> allCredits = new ArrayList<>();
    16. private Integer state = 0; // 1 表示有钱
    17. @Override
    18. public void borrow(Credit credit) {
    19. allCredits.add(credit);
    20. }
    21. @Override
    22. public void notifyCredits() {
    23. for (Credit credit : allCredits) {
    24. credit.takeMoney();
    25. }
    26. }
    27. }
    28. interface Credit {
    29. void takeMoney();
    30. }
    31. class WangWu implements Credit {
    32. @Override
    33. public void takeMoney() {
    34. System.out.println("WangWu take money");
    35. }
    36. }
    37. class ZhaoSi implements Credit {
    38. @Override
    39. public void takeMoney() {
    40. System.out.println("ZhaoSi take money");
    41. }
    42. }