import java.util.Enumeration;
import java.util.Vector;
/**
*
* @author: muyichun
* @date : 2016年3月23日15:07:32
* @function: 观察者模式
*/
public class Main{
public static void main(String[] args) {
Subject sub = new MySubject();
sub.add(new Observer1());
sub.add(new Observer2());
sub.operation();
}
}
//所有Observer需要实现的接口
interface Observer{
public void update();
}
//两个实现类
class Observer1 implements Observer{
@Override
public void update() {
System.out.println("Observer1 has received!");
}
}
class Observer2 implements Observer{
@Override
public void update() {
System.out.println("Observer2 has received!");
}
}
//Subject接口及实现类
interface Subject{
//增加观察者
public void add(Observer observer);
//删除观察者
public void del(Observer observer);
//通知所有的观察者
public void notifyObservers();
//自身的操作
public void operation();
}
abstract class AbstractSubject implements Subject{
private Vector<Observer> vector = new Vector<Observer>();
@Override
public void add(Observer observer) {
vector.add(observer);
}
@Override
public void del(Observer observer) {
vector.remove(observer);
}
@Override
public void notifyObservers() {
Enumeration<Observer> enumo = vector.elements();
while(enumo.hasMoreElements()){
enumo.nextElement().update();
}
}
}
class MySubject extends AbstractSubject{
@Override
public void operation() {
System.out.println("update self!");
notifyObservers();
}
}
观察者模式——类似于空间、微博特别关注后的自动推送。
——贴上自己喜欢的代码!