2010-03-24 352 views
1

我不知道,什麼是代碼代碼lookups.singleton的功能如下這段代碼是什麼意思?

public class ProjectNode extends AbstractNode { 

public ProjectNode(MainProject obj, ProjectsChildren children) { 
    super (children, Lookups.singleton(obj)); 
    setDisplayName (obj.getName()); 
} 
} 
+0

joseph/badgirl複製http://stackoverflow.com/questions/2526758/how-does-lookup-work? – Karussell 2010-03-27 22:42:39

+0

既然這首先被問過了,我想你應該叫另一個笨蛋 – Claudiu 2010-03-27 22:50:14

回答

2

Lookups是什麼是通常被稱爲服務定位器和它通常被視爲一個反模式,但這些天在5-8年前相當普遍。 singleton()方法是類中的一個公共靜態方法,用於從本質上查找對基本全局對象的引用。想象一下,它看起來像:

public class Lookups { 
    public static SomeObject singleton(InputObject obj) { 
    // use the parameter to return some other object 
    } 
} 

它看作是一個反模式的原因是,它可以使極難單元測試或代碼的模擬部分。在Java DI(「依賴注入」)中,像Spring這樣的框架往往比這種方法更受青睞。

+0

哪個簡單的模式可以代替這個反模式? – joseph 2010-03-24 00:24:52

+0

@joseph這是一個Web應用程序,桌面應用程序,還有別的嗎?你已經使用Spring了嗎? – cletus 2010-03-24 00:35:10

+0

它是桌面,我只用netbeans平臺。我將通過platform.netbeans.org上的教程進行討論,但我不知道,我可以使用哪種模式來代替這種難以理解的查找。 – joseph 2010-03-24 00:43:22

3

你可以閱讀關於NetBeans Platform's Lookup apis以獲得設計模式的概述。您也可以read about the class named Lookups,瞭解其方法的詳細信息。

基本上,該API創建一個僅包含單個對象的查找對象。當你調用這個對象時,只會返回用於初始化對象的對象,如果它實現/擴展查詢中使用的對象。

查找模式是NetBeans平臺的一個非常重要的部分。