现在的位置: 首页 > 综合 > 正文

观察者模式之二 -发布 订阅模式

2018年05月22日 ⁄ 综合 ⁄ 共 1267字 ⁄ 字号 评论关闭
 

观察者模式(有时又被称为发布/订阅模式)是软体设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时候,会通知所有的观察对象,以便他们能更新自己

 

主题对象,主题对象发生变化时,能够更新监听他的对象

package com.design.observer03;

import java.util.ArrayList;
import java.util.List;

public class Subject {
	private List<Observer> observers = new ArrayList<Observer>();
	public void addObserver(Observer observer)
	{
		observers.add(observer);
	}
	public void removeObserver(Observer observer)
	{
		observers.remove(observer);
	}
	
	public void notifyObservers()
	{
		for(Observer o:observers)
		{
			o.update();
		}
	}

}

 

 

package com.design.observer03;

public abstract class Observer {

	protected String name;
	public Observer(String name,Subject subject) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public abstract void update();
}

 

 

package com.design.observer03;

public class ObserverA extends Observer{

	public ObserverA(String name, Subject subject) {
		super(name, subject);
		subject.addObserver(this);
		
	}

	@Override
	public void update() {
		System.out.println("ObserverA 更新自己");
	}

}

 

 

package com.design.observer03;

public class ObserverB extends Observer{

 public ObserverB(String name, Subject subject) {
  super(name, subject);
  subject.addObserver(this);
 }

 @Override
 public void update() {
  System.out.println("ObserverB 更新自己");
 }

}


 

 

 

抱歉!评论已关闭.