设计模式之观察者模式

来源:互联网 发布:淘宝黑盘羊 编辑:程序博客网 时间:2024/05/17 23:48

先定义subject 类

package com.observer.subject;


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


public class Subject {
//定义观察者列表
private  List<Observer> observerList = new ArrayList<Observer>();

public void attach(Observer observer){
observerList.add(observer);
}

public void remove(Observer observer){
observerList.remove(observer);
}

protected void notifyObserver(){
for(Observer observer :observerList ){
observer.update(this);
}
}
}



创建NewsPaper 类

package com.observer.subject;
public class NewsPaper extends Subject {

//报纸的具体内容
String  content = null;

public String getContent(){
   return content;
}

public void setConent(String content){
this.content = content;

notifyObserver();//通知所有的观察者

}



package com.observer.subject;


public interface Observer {

//
public void update(Subject subject);


}



package com.observer.subject;


public class ConcreteObserver implements Observer {


String name =null;

public ConcreteObserver(String name){
this.name = name;
}

@Override
public void update(Subject subject) {

System.out.println(this.name +" 收到了报纸,报纸的内容为:"+((NewsPaper)subject).getContent() +this.name);
}
   
public String getName(){
return this.name;
}

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

   System.out.println(this.name);
}
}



package com.observer.subject;


public class Client {
         public static void main(String args[]){
        NewsPaper paper = new NewsPaper();
        ConcreteObserver reader1 = new ConcreteObserver();
        reader1.setName("李广");
         
        ConcreteObserver reader2 = new ConcreteObserver();
        reader1.setName("李白");
         
        ConcreteObserver reader3 = new ConcreteObserver();
        reader1.setName("lyp");
         
        paper.attach(reader1);
        paper.attach(reader2);
        paper.attach(reader3);
         
         
                
        paper.setConent("今天徐才厚因患膀胱癌死亡!");
         
         
         
         }
}


0 0
原创粉丝点击