package com.example.observerdemo;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 13-6-9.
*/
public class SuperUser {
private String name;
private Message ms = new Message();
List<Message> receiveMesseges = new ArrayList<Message>(); //存储接收到的信息
List<SuperUser> Observiers = new ArrayList<SuperUser>(); //关注人的列表
public SuperUser(String name) {
this.name = name;
}
public Message getMs() {
return ms;
}
public void setMs(Message ms) {
this.ms = ms;
}
public void beiguanzhu(SuperUser person)
{
registerObserver(person);
}
public void registerObserver(SuperUser person)
{
Observiers.add(person);
}
public void unregisterObserver(SuperUser person)
{
Observiers.remove(person);
}
public void notifyObservers()
{
for(SuperUser person:Observiers)
{
// Log.v("Messge", "notifyObservers" + this.getMs().getMtitle());
person.update(this);
}
}
public void update(SuperUser person)
{
// Log.v("Messge","update"+person.getMs().getMtitle());
receiveMesseges.add(person.getMs());
// display();
}
public void display()
{
for(Message mes:receiveMesseges)
{
Log.v("Messge",this.name+"update weibo :"+"Title:"+mes.getMtitle()+"Text:"+mes.getMtext());
}
}
public void sendNewMessage(Message ms)
{
setMs(ms);
// Log.v("Messge","sendNewMessage"+this.getMs().getMtitle());
notifyObservers();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SuperUser p1,p2,p3,p4;
p1 = new SuperUser("Divid");
p2 = new SuperUser("Lily");
p3 = new SuperUser("Honey");
p4 = new SuperUser("Simon");
//互相关注,用于测试
p2.beiguanzhu(p1);
p3.beiguanzhu(p1);
p4.beiguanzhu(p1);
p1.beiguanzhu(p2);
p2.beiguanzhu(p3);
p1.beiguanzhu(p3);
p2.beiguanzhu(p4);
p1.beiguanzhu(p4);
//发信息
Message ms = new Message();
ms.setMtitle("I lOVE");
ms.setMtext("CHina");
p1.sendNewMessage(ms);
ms = new Message();
ms.setMtitle("I lOVE");
ms.setMtext("USA");
p2.sendNewMessage(ms);
ms = new Message();
ms.setMtitle("I lOVE");
ms.setMtext("UK");
p3.sendNewMessage(ms);
ms = new Message();
ms.setMtitle("I lOVE");
ms.setMtext("English");
p4.sendNewMessage(ms);
//更新时显示接收到的信息
p1.display();
p2.display();
p3.display();
p4.display();}
public class Message {
private String mtitle;
private String mtext;
private boolean displayed = false;
public boolean isDisplayed() {
return displayed;
}
public void setDisplayed(boolean displayed) {
this.displayed = displayed;
}
public String getMtitle() {
return mtitle;
}
public void setMtitle(String mtitle) {
this.mtitle = mtitle;
}
public String getMtext() {
return mtext;
}
public void setMtext(String mtext) {
this.mtext = mtext;
}
}
测试结果: