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);
    
    
        }
    }
  • 相关阅读:
    Codeforces Round #319 (Div. 2) D
    因为网络请求是 异步的,
    ios真蛋疼,
    单例模式的两种实现,
    jump, jump,
    一点 误删,
    关于代理,
    button上的两个手势,
    数据,
    header 的蓝色,
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/10935473.html
Copyright © 2011-2022 走看看