輕松控制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; } }
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。