【Eclipse外掛程式開發】在什麼情況下建立擴充點

來源:互聯網
上載者:User

我想絕大部分Eclipse外掛程式開發人員對擴充點這個概念應該都比較熟悉了,那 麼什麼時候決定建立自己的擴充點呢?簡單的說一下俺的看法,錯了不要笑話。

為什麼說這個問題呢?親眼看到一些外掛程式開發剛入門的人,不怎麼懂得擴充 點相關的東西,也談不上理解擴充點機制,所以這個時候從來不自己定義新的擴 展點;過了一段時間之後,感覺使用Eclipse擴充點有點經驗了(尤其是 workbench相關的擴充點肯定經常使用),開始定義自己的擴充點了,....,災 難發生了,亂定義擴充點,各種想法的擴充點都出來了.....

背景知識:【Eclipse外掛程式開發】Eclipse中的擴充點機制存在的理由

在什麼情況下你才會建立你自己的擴充點呢?一句話:允許擴充,而且是主 動邀請外部擴充。

在定義擴充點之前,你可以試著問一下自己如下兩個問題:

1、從需求角度考慮,要這種需求存在嗎?

2、從技術視角思考,你要用擴充點描述的東西是不是屬於模組內部的實現?

3、從技術視角思考,即使需要擴充,真的需要動態掛入嗎?java預設的靜態 注入不可以?

4、從技術視角思考,你處的模組是不是一個上層功能模組?

關於第一點,就去看一下需求文檔,對應的功能點需求描述如何。這個時候 從客戶的角度看,客戶會針對你的模組進行二次開放嗎,如果開發,需要註冊擴 展到你的模組嗎?

關於第二點,如果你要用擴充點描述的東西不是對模組外部可見的,是屬於 你模組裡面的內部實現,擴充點肯定用不上。

關於第三點,是很多新人非常容易犯的錯誤,將語言特性和平台機制混在了 一起。舉個例子,假設你定義了一個策略介面IPolicy,有個對應的manager類型 的角色在管理IPolicy執行個體,現有實現PolicyA、PolicyB,

1 public class PolicyManager {
2 private static PolicyManager manager;
3
4 private List<IPolicy> policyList = new ArrayList<IPolicy>(5);
5
6 /**
7 * sinleton
8 */
9 private PolicyManager() {
10 policyList.add(new PolicyA());
11 policyList.add(new PolicyB());
12 }
13
14 public static PolicyManager getInstance() {
15 if (manager == null)
16 manager = new PolicyManager();
17
18 return manager;
19 }
20
21 public static IPolicy [] getPolicys() {
22 //TODO:
23 }
24 }

而且你感覺以後還會有有PolicyC加入。那就加入好了,加入的時候望你的 manager裡面用代碼註冊一下就可以了。那可能會問,這樣不是修改代碼了嗎, 如果用擴充點,那麼不就不用修改manager的代碼了? 要記住,擴充點是平台 機制,比語言特性高一個level。在這種情境下,除非你確實需要外部參與提供 新的IPolicy實現(利用擴充點動態掛入),否則就老實用java語言支援的吧。

關於第四點,看一下Eclipse自身提供的擴充點就知道了。Eclipse中大部分 擴充點基本上都是在兩中類型模組中提供的:一是基礎模組,例如runtime、 resource management、workbench;二是可能需要二次定製開發的模組,例如 JDT,因為很多情境下使用者會基於JDT進行擴充開發,往JDT中提供自己的擴充。  如果你的模組是一個上層的功能模組,而且也可以肯定不會有其他模組會依賴 於它,那麼怎麼可能會存在擴充點呢???如果你現在做的是一個IDE,建立了 自己的工程類型,那麼現有的檔案類型就有可能會擴充。你現在在設計一個 project builder,正常的設計邏輯當然是針對不同檔案類型去調用對應的編譯 器,那這種編譯器就需要動態掛入了。例如你的針對檔案的編譯器介面是 IModelCompiler,那你就建立一個compiler擴充點,你現有的compiler實現也是 以擴充點的方式動態掛入,公平法則啊。

幾點綜合考慮吧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.