程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 輕松控制Java不雅察者形式

輕松控制Java不雅察者形式

編輯:關於JAVA

輕松控制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;
 }
}

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved