zoukankan      html  css  js  c++  java
  • [一天一个设计模式]-[观察者模式]

    观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。

    观察者模式包含如下角色:

    1. Subject: 目标
    2. ConcreteSubject: 具体目标
    3. Observer: 观察者
    4. ConcreteObserver: 具体观察者

    举个栗子,打篮球,开球时所有球员都观察裁判抛篮球

    
    abstract class Ball{
        
        List<Player> players = new ArrayList<>();
        
        public void setPlayer(Player player){
            player.add(player);
        }
        //通知观察者方法
        public abstract void notifyPlayer(); 
        
    }
    
    class BasketBall extend Ball{
        @Override 
        public void notifyPlayer(){
            players.stream().foreach(player->{
                player.active();
            })
        }
    }
    
    interface Player{
        void active();
    }
    
    class PlayerA implements Player{
        @Override
        public void active(){
            sout("I'm  A");
        }
    }
    
    class PlayerB implements Player{
        @Override
        public void active(){
            sout("I'm  B");
        }
    }
    
    
    main(){
        Ball ball=new BasketBall()
        Player a = new PlayerA();
        Player b = new PlayerB();
        ball.setPlayer(a);
        ball.setPlayer(b);
        
        
        ball.notifyPlayer();
        
        
    }
    
    
  • 相关阅读:
    python json模块出现Invalid control character这个异常的原因
    KMS服务,使用命令激活windows/office
    vscode Python文件头部信息
    MIMIC-III Clinical Database 翻译
    autohotkey 设置
    DeepLearning 写代码常用
    VScode 个人设置
    随机种子设置
    samba配置
    jieba 分词不显示日志
  • 原文地址:https://www.cnblogs.com/A-yes/p/12026929.html
Copyright © 2011-2022 走看看