zoukankan      html  css  js  c++  java
  • 观察者模式

    1 /*
    2 * 观察者
    3 * 关注公众号的人
    4 * */
    5 public interface Observer {
    6     //处理公众号发来的信息
    7     void handleNotify(Object message);
    8 }
    1 //观察者
    2 public class User2Observer implements Observer {
    3     @Override
    4     public void handleNotify(Object message) {
    5         System.out.println("小红也接收到:"+message+"公众号推送来的提示");
    6     }
    7 }
    1 //观察者2
    2 public class UserObserver implements Observer {
    3     @Override
    4     public void handleNotify(Object message) {
    5         System.out.println("小明接收到:"+message+"公众号推送来的提示");
    6     }
    7 }

    接下来就写被观察的对象

    1 //被观察者 -->公众号
    2 public interface Subect {
    3     //推送文章 里面的括号(需要添加观察者也就是关注公众号的人)
    4     void pushArticle(Observer observer);
    5     //删除文章 里面的括号(需要添加观察者也就是关注公众号的人)
    6     void deleteArticle(Observer observer);
    7     //通知用户
    8     void notityUser(Object msg);
    9 }
     1 /*
     2 被观察者
     3 */
     4 
     5 public class AccountsSubect implements Subect {
     6     private List<Observer> ob;
     7     //创建一个无参  使得被观察者一创建,观察者也能一起被创建
     8     public AccountsSubect(){
     9         ob = new ArrayList<>();
    10     }
    11 
    12 
    13     @Override
    14     public void pushArticle(Observer observer) {
    15         ob.add(observer);
    16     }
    17 
    18     @Override
    19     public void deleteArticle(Observer observer) {
    20         //判斷是否有這個人
    21         if (ob.contains(observer)) {
    22             ob.remove(observer);
    23         }
    24     }
    25 //    @Override
    26     public void notityUser(Object msg) {
    27         //通知每一个观察者
    28         for (Observer observer : ob) {
    29             observer.handleNotify(msg);
    30         }
    31     }
    32 }
     1 public class Mytest {
     2     public static void main(String[] args) {
     3         //创建多个观察者
     4         UserObserver o1 = new UserObserver();
     5         User2Observer o2 = new User2Observer();
     6 
     7         //创建被观察者
     8         Subect s = new AccountsSubect();
     9         
    10         s.pushArticle(o1);
    11         s.pushArticle(o2);
    12         
    13         //删除推送
    14         s.deleteArticle(o1);
    15         //通知
    16         s.notityUser("{小米官方}");
    17 
    18     }
    19 }

  • 相关阅读:
    操作系统的安装与启动基本原理
    Arch linux安装
    18 个最佳代码编辑器/IDE推荐
    2011年排名前七位的Linux操作系统。
    十大流行linux
    Java中浮点型数据Float和Double进行精确计算的问题
    Inside JVM 内存模型
    java常见面试题及答案
    Java内存模型
    虚拟机性能监控与故障处理工具
  • 原文地址:https://www.cnblogs.com/rzkwz/p/12662759.html
Copyright © 2011-2022 走看看