设计模式20-观察者模式

1. 概念

    定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新

 

2. 案例

    

package org.demo.observe.demo01;



import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;



abstract class Observer{ //观察者

    abstract void update(String status) ; //更新

}



abstract class Subject {  //被观察的对象

    protected String status ;

    public Subject(String status){

        this.status = status ; 

    }

    

    

    public String getStatus() {

        return status;

    }



    public void setStatus(String status) {

        this.status = status;

    }





    private List<Observer> observers = new ArrayList<Observer>() ;

    

    public void attach(Observer observer){

        observers.add(observer) ;

    }

    

    public void remove(Observer observer){

        observers.remove(observer) ;

    }

    

    public void MyNotify(){

        for(Iterator<Observer> it = observers.iterator() ; it.hasNext() ;){

            ((Observer)it.next() ).update(status);

        }

    }

}





class Obs01 extends Observer{



    @Override

    void update(String status) {

        System.out.println("观察者一发现了变化:"+status);

    }

}



class Obs02 extends Observer{



    @Override

    void update(String status) {

        System.out.println("观察者二发现了变化:"+status);

    }

}



class ConcreteSubject extends Subject{



    public ConcreteSubject(String status) {

        super(status);

    }

    

}

public class Demo01 {

    public static void main(String[] args) {

        ConcreteSubject cs = new ConcreteSubject("有新的新闻了 .") ;

        cs.attach(new Obs02()) ;

        cs.attach(new Obs01()) ;

        cs.MyNotify() ;

        cs.setStatus("又来新闻了") ;

        cs.MyNotify() ;

    }

}

 

你可能感兴趣的:(观察者模式)