2014-08-29 54 views
0

如果有編程語言無關的範例,模型,模式等設計爲此筆者擬允許第三方開發人員能夠編寫插件應用程序我想知道。例如,如果您想要創建某種類型的文本編輯器,則只需關注主要組件,然後讓其他人添加一個可執行拼寫檢查,語法,字數,閱讀水平等的可插入插件。 ......在基本編輯器原作者造成的,做什麼樣的事情,他們需要做管理的切入點,鉤等一般設計要求提出申請「可插拔」

是否有任何技術或方法來管理這個,還是這真的取決於平臺,語言等(例如,在Web應用程序使用的插件與桌面GUI應用同樣的概念 - C++ VS Python)的

回答

0

這是一個多層次,非常通用的問題。關於基本的OO設計概念,依賴性反轉(加上相關的控制和依賴注入反轉)SOLID原理可能對您有所幫助。 GRASP的低耦合,間接和多態性也會給出一些指導。

每個特定企業採用的平臺幾乎總是提供創建可插拔體系結構的具體機制。

最着名的可能是Java的OSGi,已經移植到其他幾個平臺。 在.NET世界中,您可能會調查MEF/MAF框架或System.AddIn命名空間中的類型。

此外,你可能會考慮任何DI容器的使用是不是僅僅遵循面向對象的設計原則,比使用OSGi或MEF/MAF更通用的不那麼抽象的東西。微軟的Unity就是一個例子。

此外取決於你可能要考慮事件驅動的集成,通常提供簡潔明瞭的合同,很鬆耦合系統的大小。 RabbitMQ教程提供了基本的模式,但實際上您最終可能會使用更低級別的(ZMQ)或高級別的(BizTalk,Tibco等)。