zoukankan      html  css  js  c++  java
  • Java——观察者模式实例

    观察者模式(订阅/发布模式)
    作者:
    代码大湿
    代码大湿

    Java中观察者模式中主要是Observerable类(被观察者),和Observer接口(观察者)。下面是个简单的demo

    //被观察者

    package demo;
    
    import java.util.Observable;
    
    public class MyObserverable extends Observable{
    	
    	//被观察者调用了这个方法,观察者就会发现
    	@Override
    	protected synchronized void setChanged() {
    		// TODO Auto-generated method stub
    		super.setChanged();
    	}
    
    //被观察者调用了这个方法,就会向观察者发送改变的信息
    	@Override
    	public void notifyObservers(Object arg) {
    		// TODO Auto-generated method stub
    		super.notifyObservers(arg);
    	}
    	
    }
    
    

    //观察者

    package demo;
    
    import java.util.Observable;
    import java.util.Observer;
    
    public class MyObserver implements Observer{
    	private String name;
    	public MyObserver(String name) {
    		this.name=name;
    	}
    	//一旦被观察者有改变,就会调用update方法
    	@Override
    	public void update(Observable o, Object arg) {
    		System.out.println(name+"观察到 "+arg.toString());
    	}
    
    }
    
    

    //main方法

    package demo;
    
    public class Main {
    	public static void main(String[] args) {
    		MyObserver myObserver_1=new MyObserver("observer_1");
    		MyObserver myObserver_2=new MyObserver("observer_2");
    		
    		MyObserverable myObserverable=new MyObserverable();
    		//添加2个观察者
    		myObserverable.addObserver(myObserver_1);
    		myObserverable.addObserver(myObserver_2);
    		
    		String msg="msg has changed";
    		//设置消息改变点
    		myObserverable.setChanged();
    		//通知观察者改变的消息
    		myObserverable.notifyObservers(msg);
    	}
    
    }
    
    

    结果

    这里写图片描述


    更多好文关注;
    代码大湿
    代码大湿

  • 相关阅读:
    『深度应用』NLP机器翻译深度学习实战课程·零(基础概念)
    Sorl初始
    Hadoop简介
    lucene的分词器宝典
    Lucene 更新、删除、分页操作以及IndexWriter优化
    Lucene 初步 之 HelloWorld
    lucene介绍和存储介绍
    Spring 集成rabbiatmq
    RabbitMQ 之消息确认机制(事务+Confirm)
    RabbitMQ 的路由模式 Topic模式
  • 原文地址:https://www.cnblogs.com/pin-wang/p/5554512.html
Copyright © 2011-2022 走看看