zoukankan      html  css  js  c++  java
  • 设计模式学习笔记(六、行为型-观察者模式)

     1 /**
     2  * 被观察者
     3  *
     4  * @author zhoude
     5  * @date 2020/4/12 14:48
     6  */
     7 public interface Observer {
     8 
     9     /**
    10      * 接受观察者的通知消息
    11      *
    12      * @param message 通知消息
    13      */
    14     void notify(String message);
    15 }
     1 public interface Subject {
     2 
     3     /**
     4      * 添加一个被观察者
     5      *
     6      * @param observer 被观察者
     7      */
     8     void addObserver(Observer observer);
     9 
    10     /**
    11      * 移除一个被观察者
    12      *
    13      * @param observer 被观察者
    14      */
    15     void removeObserver(Observer observer);
    16 
    17     /**
    18      * 给被观察者发送消息
    19      *
    20      * @param message 通知消息
    21      */
    22     void notifyObservers(String message);
    23 }
     1 public class SubjectImpl implements Subject {
     2 
     3     private List<Observer> observers = new ArrayList<>();
     4 
     5     @Override
     6     public void addObserver(Observer observer) {
     7         observers.add(observer);
     8     }
     9 
    10     @Override
    11     public void removeObserver(Observer observer) {
    12         observers.remove(observer);
    13     }
    14 
    15     @Override
    16     public void notifyObservers(String message) {
    17         for (Observer observer : observers) {
    18             observer.notify(message);
    19         }
    20     }
    21 }
    1 public class ObserverImpl1 implements Observer {
    2 
    3     @Override
    4     public void notify(String message) {
    5         System.err.println("observer1 message:" + message);
    6     }
    7 }
    1 public class ObserverImpl2 implements Observer {
    2 
    3     @Override
    4     public void notify(String message) {
    5         System.err.println("observer2 message:" + message);
    6     }
    7 }
    1 public class Test {
    2 
    3     public static void main(String[] args) {
    4         Subject subject = new SubjectImpl();
    5         subject.addObserver(new ObserverImpl1());
    6         subject.addObserver(new ObserverImpl2());
    7         subject.notifyObservers("msg");
    8     }
    9 }
  • 相关阅读:
    SecureCRT ssh Ubuntu Home End delete键失效?
    ssh登陆ubuntu开始较慢
    Ubuntu 12.04安装最新版本PostgreSQL
    xpath用法
    算法作业5——分治法求最近点对问题
    算法作业4——二分归并排序
    算法作业2——Floyd和Dijkstra
    算法作业3——顺序查找和二分查找
    算法作业1——Prim和Kruskal算法
    M
  • 原文地址:https://www.cnblogs.com/bzfsdr/p/12685451.html
Copyright © 2011-2022 走看看