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

    /**
     * 观察者模式:就是一个发布订阅模型,有多个观察者和一个被观察者,被观察者状态改变,通知观察者
     * 特点:一个被观察者,多个观察者,被观察者有个集合存储注册的观察者,被观察者提供注册,注销,通知功能
     *此处以银行发工资为例子
     *
     */
    
    //被观察者,银行
    public class Bank {
        private Integer state;
        private List<Obsever> list;
    
        public Bank() {
            list=new ArrayList<>();
        }
    
        public void register(Obsever o){
            list.add(o);
        }
    
        public void removeObser(Obsever o){
            list.remove(o);
        }
    
        public void notifyAllObser(String message){
            for (Obsever obsever : list) {
                obsever.getMessage(message);
            }
        }
        //状态变更,通知用户
        public void changeStatus(Integer state){
            this.state=state;
            notifyAllObser("工资已经发放了");
        }
    }
    //观察者
    public class Obsever {
        private String name;
    
        public Obsever(String name) {
            this.name = name;
        }
    
        public void getMessage(String message){
            System.out.println("尊敬的"+name+":"+message);
        }
    }
    public class Test {
        public static void main(String[] args) {
            Bank bank = new Bank();//被观察者
            //注册观察者
            bank.register(new Obsever("小明"));
            bank.register(new Obsever("小花"));
            bank.register(new Obsever("小光"));
            //通知观察者
            bank.changeStatus(2);
    
    
        }
    }
  • 相关阅读:
    全局变量、函数、文件基本操作、冒泡排序
    元组,字符串,集合,文件操作
    Python使用小技巧
    pycharm
    postman和charles
    将博客搬至CSDN
    垃圾陷阱
    codevs 1139 观光公交
    1159 最大全0子矩阵
    NOI 193棋盘分割.cpp
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/10935473.html
Copyright © 2011-2022 走看看