/**
* Description:論壇(被觀察者)
*
* @date 2019-05-28 20:25
*/
public class Forum extends Observable {
private String name = "XX論壇";
private static Forum instance;
private Forum() {
}
public static Forum getInstance() {
if (instance == null) {
instance = new Forum();
}
return instance;
}
public String getName() {
return name;
}
public void publish(Question question) {
System.out.println(question.getUserName() + "發(fā)布一個問題,具體內(nèi)容為:" + question.getContent());
setChanged();
notifyObservers(question);
}
}
/**
* Description:問題
*
* @date 2019-05-28 20:36
*/
public class Question {
private String userName;
private String content;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
/**
* Description:版主(觀察者)
*
* @date 2019-05-28 20:38
*/
public class Moderator implements Observer {
private String name;
public Moderator(String name) {
this.name = name;
}
@Override
public void update(Observable o, Object arg) {
Forum forum = (Forum)o;
Question question = (Question)arg;
System.out.println("======================================");
System.out.println(name+"版主,你好"+"\n"
+question.getUserName()+"在 <"+forum.getName()+"> 發(fā)布了一個問題,\n"
+"內(nèi)容:"+question.getContent());
}
}
/**
* Description:測試類
*
* @date 2019-05-28 20:44
*/
public class Test {
public static void main(String[] args) {
Forum forum = Forum.getInstance();
Moderator a = new Moderator("A版主");
Moderator b = new Moderator("B版主");
Question question = new Question();
question.setUserName("小白");
question.setContent("花兒為什么這樣紅?");
forum.addObserver(a);
forum.addObserver(b);
forum.publish(question);
}
}
3.guava實現(xiàn)
public class GuavaEvent {
@Subscribe
public void subscribe(String src){
System.out.println("執(zhí)行GuavaEvent 類的subscribe("+src+")方法");
}
}
public class Test {
public static void main(String[] args) {
//消息總線
EventBus eventBus = new EventBus();
GuavaEvent guavaEvent = new GuavaEvent();
eventBus.register(guavaEvent);
eventBus.post("sKy");
}
}