2010-02-23 107 views

回答

1

Java Beans的重點在於系統(特別是GUI Builder)可以檢查Java Bean並在沒有任何此組件的情況下對其進行配置。

雖然這相當酷,但它只在這種特定情況下才有用,現在這些註釋會更好。

因此,他們使用綁定屬性的原因僅僅是爲了支持這種插入式GUI組件技術,除非需要支持反射式gui構建系統,否則我不會更喜歡它。

響應@Mike齧齒動物

比方說,你讓你的用戶創建一個類,您將控制。這個班有一個「主」,可以處理幾個事件。

通常你有你的用戶做這樣的事情:

 
class UserClass(someClass) { 
    void mainMethod() { 
     someClass.addEventListener(new EventListener() { 
      public void eventsHappen(Event e){ 
        event1(e) 
       } 
      } 
     } 
     someClass.addDifferentEventListener(new DifferentEventListener() { 
      public void eventsHappen(DifferentEvent e){ 
        event2(e) 
       } 
      } 
     } 
    } 

    public void event1(Event e) { 
     //java code for event 1 
    } 
    public void event2(DifferentEvent e) { 
     // java code for event 2 
    } 
}

無論如何,你的想法。當然,你認爲這個類是在某處註冊的 - 可能是在xml/config文件中。你讀它,實例化它並執行mainMethod(由協議或接口定義),它自己註冊並開始調用事件處理程序。

現在,這裏是你如何能做到用註解同一件事:(您可能認識的格局 - 這幾乎是Junit的是如何詮釋測試。)

 
class UserClass() { 
    @Event1 
    void event1Method(Event e) { 
     event1's code 
    } 
    @Event2 
    void event2Method(AnotherEvent e) { 
     event2's code 
    } 
} 

這是更爲直剛愎和去除大部分的樣板,並且它也消除了對協議或界面的需求,註釋更加清晰地定義和獨立。 (如果你關心的是傳遞給方法的參數,你實際上甚至不需要事件註釋,但是龍就是在這個大方向上)。

您仍然需要在某處註冊的類,但是這次您只需掃描每種方法以查找事件註釋並自行註冊它們。由於只有幾行代碼才能讀取和處理類,所以爲什麼要限制這種模式進行單元測試?

我發現的另一件事情非常整潔,我將這種模式用於「插入」到我的Java程序中的Groovy類。由於我正在編譯給定目錄中的所有類,因此掃描註釋很簡單。對用戶的影響是他插入(或編輯)正確註釋的常規文本文件,我的代碼立即編譯,集成並開始調用他們的事件處理程序。

+0

我對你關於註釋的評論很感興趣:你可以給一個鏈接或者簡單地解釋一下注釋可以如何用於事件處理? – 2012-11-11 10:39:06

0

JavaBeans是一個規範。它將綁定屬性定義爲其修改導致發出通知的綁定屬性,並且PropertyChangeEvent是受制裁的通知實體。

所以推測的JavaBeans-spec bean編輯器應該監聽PropertyChangeEvents。除了需要使用該規範之外,我自己也不會使用它。

0

我認爲JavaBeans規範的設計考慮了通用對象處理。例如,將JavaBean放入IDE中並使用可視化屬性編輯器進行配置。在這種情況下,IDE將使用一般的PropertyChangeEvent等。

或者如果你想從一個bean複製同等命名的屬性到另一個......這是bean使用(BeanUtils類)的另一種情況。但是,如果你打算做某些具體的事情,就像Noel Ang說的那樣,我建議你打字強。

相關問題