休息了乙個月,終於要重出江湖了。新工作是做winform開發,解決方案中scsf是很關鍵的部分。以前沒接觸過scsf框架,對mvp模式了解有限,本文也就不對scsf作深入的分析,只從mvp架構依賴關係上進行一些簡單的分析。今天第一次接觸這個框架,寫得有問題的地方,大家指正。
建立scsf專案後就可以執行了,這個時候如果新增乙個module,那麼執行時的樣子完全變掉了。這跟新增的module預設模板生成的module類有很大關係。
private
void
showlayoutview()
else
throw
newmoduleloadexception(
"layoutworkpsace not found");
} showlayoutview方法把workspaces的主窗體給覆蓋掉了。這個窗體結構是在infrastructure.layout程式集定義的。infrastructure.layout相當於webform裡的masterpage,是乙個布局。而如何很好地利用這個布局呢?
這個時候一般有兩個處理方法。
一、修改infrastructure.layout
修改infrastructure.layout並不是修改布局,而是修改邏輯。我的理解,按scsf框架的原意,應該是新建的module依賴於infrastructure.layout,而這裡的修改infrastructure.layout的以上是把依賴關係反過來,由infrastructure.layout定義事件驅動建立的新的module。我認為,這種方式會造成嚴重的依賴問題,而且事件的管理過於集中。這種方式非常像是簡單工作的工作方式。但是這種開發更加符合不分層的開發方式,就直觀理解上來說,要比分層容易理解。但是應該會給維護造成很大的麻煩。
二、修改module的載入
module的載入與shell裡profilecatalog.xml定義的modules順序無關,關鍵是要看show方法。有show方法,這個view就會顯示,否則將不會顯示。應該在新建module程式集的module類控制哪些view被顯示。而因為新建的module1完全不知道module2,因此,不可能由module來驅動module,因此,在同乙個layout下的view應該建立在乙個module中。顯示的時候_rootworkitem.workspaces[workspacenames.rightworkspace].show(layout);注意,在layout裡定義了3個區域,這3個區域可以分別載入。而在事件驅動時,可以通過close方法關閉載入的view,避免記憶體浪費。
另外,在services中定義業務邏輯部分,似乎在view中也能夠被使用,這就違背了mvp的本意。資料應該在presenter類被組織,而後被view引用。否則就是mvc而不是mvp了。
對有多個form以及view介面如何使用,暫時還沒有深入思考,有經驗的朋友請指點一二。
看穿node中的Module
為了減少變數汙染以及 維護node採用了commonjs規範。今天模擬一下module。首先建立被引入檔案 a.js module.exports hello 複製 建立module檔案 定義module類 class module 定義require方法 function myrequire le...
關於python中的module
python中的module 模組 關於這個概念以及使用時主要有以下幾點需要注意 1 import xx時,會首先將這個xx module中的 執行一遍 且僅執行一遍 例如 2 模組包 3 通過import可以匯入其他模組中的物件 物件包括 函式 全域性變數 import module name m...
module中的Activity顯示空白或異常
androidstudio中新建module模組,以lib的形式存在 module中新建activity預設的建立方式,activity名字位mainactivity 布局為檔名為activity main.xml project 父模組 中也有乙個同名的activity和布局檔名。編譯專案是執行沒...