最近公司要求把我們公司的任務可以外包,問我有沒有好的方案。
如果要其他程序員的人來做我們內部的框架會導致了,內部的框架需要公布很多單元和邏輯,思路。其次要把我們的思路和規則強加給其他的程序員。加大了其他人員的上手難度。
帶著這種問題把框架又進行了新一輪的優化。每每改進框架後都想丟棄掉之前的框架。心裡安慰自己應該是思想上得到了升華。確實從最初的框架到mBean得到了很大的提升,從之前的帶[shareCentre.bpl]到現在的[mBean]編寫插件規則越來越領活,前一版本的框架要求都實現IPlugin,IPlugin裡面定義了一些方法。[mBean]框架中插件只要求實現[IInterface]就可以成為插件。邏輯插件不要求語言,不要求帶包。只要實現了接口都可以調用。現在想這應該是我終極版的的框架了……。以後只會在框架上面開發更多實用的接口了。
不用帶特定的bpl,就可以是插件,遠離提示包需要進行編譯的痛苦。
可以導出接口的dll都可以是制作插件。
不用帶特定的bpl進行對象的共享。
不光是窗體才是插件,panel也可以是插件,TFrame也可以是插件。一個簡單邏輯也可以是個插件。
干預代碼最少,beanFactory.registerBean("xxx",Txxx);就可以注冊插件。
可以將插件注冊車單實例插件。怎麼獲取都只會創建一份beanFactory.registerBean('xxxx',TXXx).isSingleton := true;
獲取方便,app.getBean("xxx"),就可以創建一個插件不用管插件在哪個DLL中。
綠色小巧,不用安裝任何dpk,和ocx。
支持各種版本D(D7-XE5)。
[紅色區域是不帶包的DLL中的插件窗體]
為什麼JAVA比Delphi使用的人多,想想,JAVA模式比較固定,比如WEB有成熟的SSH框架和解決方案,讓初學者容易上手,代碼比較規范,相反Delphi開源東西太少,門派太多,門道太深,太多。
[mBean]借鑒Spring模式Bean模式,來管理插件。
[mBean]插件不限定編寫模式,不限定繼承關系,不強制帶包。以一種包容心態來接收插件。
在DLL中像beanFactory注冊插件,插件對象實現IInterface就行了,編譯出來的dll放到plug-ins目錄下面就可以被beanManager.dll進行管理和調用。
每個公司都有自己的主窗體模式,
有的主窗體要求子窗體嵌入tabSheet上面,
要求子窗體實現如下接口:
/// <summary> ////// </summary>= showAsMDI; showAsModal: Integer; // UIFormClose; // UIFormFree; // getObject:TObject; // getInstanceID: Integer; ;
這些協議可以自己去定義,並去實現和遵守,這樣就是[mBean]協議的擴展。
D2007, XE5進行過編譯
[mBean]下載
http://url.cn/KdXMfu