2011-07-16 32 views
2

我想在我的netbeans平臺模塊化應用中使用中介設計模式(http://en.wikipedia.org/wiki/Mediator_pattern)。但是,我不確定如何在啓動時執行此操作,因爲似乎沒有創建我的介體並將其注入每個模塊的好方法。使用中介模式的Netbeans平臺項目 - 有可能嗎?

有沒有人知道一個很好的方法來做到這一點?我必須訴諸使用查找API或什麼?

回答

3

當涉及到NetBeans平臺和模塊化間通信最答案歸結爲查找:)

使用,你給我做了以下

@ServiceProvider(service = Mediator.class) 
class Mediator{..} 

的示例代碼ServiceProvider註解是NetBeans擴展到ServiceLoader mechanism,可以自動完成將值放入META-INF/services文件夾的工作。

的ButtonView類將如下

class BtnView extends JButton implements Command { 

    Mediator med = Lookup.getDefault().lookup(Mediator.class); 

    BtnView(ActionListener al, Mediator m) { 
     super("View"); 
     addActionListener(al); 
     med = m; 
     med.registerView(this); 
    } 

    public void execute() { 
     med.view(); 
    } 

} 

我不是很熟悉的Mediator模式進行修改,所以我希望我的理解通行證儘可能多鼓起如你能理解的例子。

更多的例子,看到這些網站

+1

我不知道爲什麼被推薦的@ServiceProvider註釋,但是當我讀到你的第二個鏈接在底部,它表示這只是一種廣告方式d默認爲全局查找。我會試試這個,稍後更新我的問題,並提供一些有關這個工作效果的信息。 – Makoto

+0

我對這種方法的一個問題是,當另一個模塊改變Mediator的數據時,是否動態改變Mediator的數據。 Lookup.getDefault是否會將相同的引用返回給所有調用它的模塊,而不是每個模塊的克隆? – Makoto

+1

@Makoto每個模塊將獲得相同的實例,因此在一個模塊中所做的更改將在另一個模塊中可見。 –