bpl外掛程式系統開發 4

2021-04-02 05:06:37 字數 1730 閱讀 7847

我們可以想像這樣乙個系統,與mvc的思想比較相同,controller負責整個系統的排程,當使用者執行了某個action後,controller將其處理後用某個特定的view來呈現給用結果.這就是mvc

先看看這個圖

這圖是我用together6.1畫的,關心的設計思想,而不是**本省,而且together本身也不支援pascal語法生成(不知道有沒有外掛程式)

其中的imisdriver就是mvc中的tcontroller,它負責協調整個系統,驅動系統工作起來.在delphi中它就是乙個全域性變數,任何單元都可以包含它,並訪問它的功能,在imisdriver內部,將會用到我們上一章說到的tpluginloader來持有所有的服務介面

下面解釋一下各個介面的作用,

itracer,這是乙個用來寫入跟蹤資訊的介面,它仿照了一些log4j的思想.

ilogin,它用於登入的到系統,至於它後台使用的機制,當然要靠我們的實現來進行驗證

iuserinfo:它返回當前登入使用者的各種資訊,

iauthentic用於驗證當前使用者是否具有某個操作的許可權.

idataservice用於提供資料服務,它可以從資料庫中取得資料,並支援事務,

ishortcutdispather它用於將使用者的快捷輸入轉化為某個操作

iactionmanager用於管理使用者動作和該動作應採用的處理資料的類的對應關係,

iprocessdata用於處理給定的資料.

我們還可以看到iview和ireport從iprocessdata繼承下來,他們同樣用來處理資料,只不過

ivew用於給使用者呈現資料的crud介面

ireport用於給使用者呈現報表

繼承自iview的幾個介面,用於對同一資料呈現不同的操作介面,我在另乙個專案formlib中基本實現了這些功能.

那麼mvc的的通常操作的流程是什麼樣子呢?

上圖沒有包含一些全域性的操作,例如itracer等.

設計給了我們對軟體更清晰的認識,3年後的今天,算是遠遠的看到了軟體設計的大門.用周xx的話來說,這個世界前所未有的清晰.....

這樣的設計為什麼能夠說有擴充套件性呢?,

整個系統靠imisdriver驅動起來,它使用介面來完成工作,每乙個介面,你可以使用不同的方法來實現,並發布它(bpl形式),就像你從pc上拔掉了乙個優盤,插上了另乙個優盤,你就可以看到故事的後半部分.

再舉個實際的例子:你原先的許可權驗證需要去掉,現在不再需要許可權,那麼你可以實現乙個總返回"允許操作"的iauthentic,發布出去,系統的執行行為整個就改變了.

這導致的結果是:imisdriver說我需要哪些介面,你只要提供了相應數量和型別的介面,他就可以按照預先設定的排程來完成整個系統.

那麼如果整個系統的排程需要變化怎麼辦呢?這在軟體設計中簡直就是災難,但是在這樣的外掛程式系統下,你只需要修改imisdriver,或者重新設計乙個idriver來驅動其他的介面,這樣的改變已經最大可能的保證了軟體的價值.

如何規劃好你的系統,這將是日後軟體復用,重構的重要因素,

理論不知道說的夠清楚沒有,之後的工作,將是枯燥的**編寫了,

總結一下,

1.面向介面,提供給外掛程式式系統中外掛程式開發成為可能.

2.bpl機制,很大程度上把我們從把外掛程式本地化的工作中逃離,它的機制在delphi中特有,基於delphi我們能做的可能只有通過它來的最方便了

3.系統的設計對於哪怕是乙個簡單的系統來說,能更好的幫助你對產品有著更全面的思想.一定要做,那怕只是花兩個圓呢.^_^

(水平有限,說不定錯誤百出,大家注意大牙別掉了,謝謝)

Android系統開發(4) Autotools

1 autoscan autoscan是用來掃瞄原始碼資料夾生成configure.san檔案的,configure.san包括了系統配置的基本選項。裡面都是一些巨集定義,我們須要將它的名字改為configure.in 2 aclocal aclocal是乙個perl指令碼程式。aclocal依據c...

系統開發 系統規劃

一 系統規劃五個階段 1 專案目標和動機 2 立項價值判斷 3 專案選擇和確定 4 初步調查 5 可行性研究 包括經濟可行性,技術可行性,法律可行性,使用者使用可行性 二 可行性分析八個階段 1 複查系統目標和規模 2 分析現在系統 3 匯出新系統的高層邏輯模型 4 使用者複查 5 提出並評價解決方...

銀行系統開發

1 銀行系統的開發與其它系統有何異同?我想大家關注銀行資訊系統建設的話題不僅僅是因為銀行it業有 錢 途,更重要的是因為銀行業是it技術應用最深入最具有代表性的行業之一。正是因為這個 原因,銀行系統的開發相對而言有著更高的要求。首先,對系統的準確性 穩定性 安全性 高效能的要求是不言而喻的,技術上的...