輕松控制Java不雅察者形式。本站提示廣大學習愛好者:(輕松控制Java不雅察者形式)文章只能為提供參考,不一定能成為您想要的結果。以下是輕松控制Java不雅察者形式正文
界說:當對象間存在一對多關系時,則應用不雅察者形式(Observer Pattern)。好比,當一個對象被修正時,則會主動告訴它的依附對象。
特色:
1、不雅察者和被不雅察者是籠統耦合的。
2、樹立一套觸發機制。
企業級開辟和經常使用框架中的運用:Java自帶不雅察者類,servlet中的filter,散布式的新聞隊列
實例:
public class Demo {
public static void main(String[] args) {
ActualSubject subject = new ActualSubject();
ObserverA o1 = new ObserverA();
ObserverA o2 = new ObserverA();
ObserverA o3 = new ObserverA();
//定閱新聞
subject.addObserver(o1);
subject.addObserver(o2);
subject.addObserver(o3);
subject.setNews("明天氣象真好");
}
}
/**
* 不雅察者接口
*/
interface Observer{
public void update(Subject subject);
}
/**
* 目的對象,播送對象
*/
class Subject{
private List<Observer> list = new ArrayList<>();
public void addObserver(Observer o){
list.add(o);
}
public void removeObserver(Observer o){
list.remove(o);
}
public void notifyAllObserver(){
for(Observer o:list){
o.update(this);
}
}
}
class ActualSubject extends Subject{
private String news;
public void setNews(String news) {
this.news = news;
System.out.println("我是播送,我收回了一個新聞");
notifyAllObserver();
}
public String getNews() {
return news;
}
}
class ObserverA implements Observer{
private String news;
public void update(Subject subject) {
setNews(((ActualSubject)subject).getNews());
System.out.println("我是不雅察者,我吸收到一個我定閱的播送收回的新聞,接上去我要做出呼應的操作");
System.out.println(getNews());
}
public String getNews() {
return news;
}
public void setNews(String news) {
this.news = news;
}
}
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。