簡單描述:將基於棧的調用抽象成基於我們自己構建的虛擬運行時調用;
.NET框架設計 感興趣,框架設計思想其實真的很美,讓人陶醉;
.NETCLR直接管理的,依賴於棧的執行,所以我們無法干預其生命周期過程,那麼我們只有將它們對象化後才能由我們自己操控;
View Code、】
View Code
ProgramComponent.ProgramBookmark 對象,如果這裡出現關於流程無法繼續下去的條件就可以不創建往下執行的代碼書簽;在第二流程裡面我們獲取第一個流程設置的參數,這裡是一個Bool值,可以用來判斷上一個執行是否成功等信息;
ProgramCompoent.ProgramBookmark集合上,這樣寫問題太大了,無法進行擴展改進;然後就是在構造函數中,我們使用了很長一段代碼來構造一個ProgramCompoent.ProgramBookmark對象,完全可以減少很多;還有就是在StartCheck方法的內部中進行循環調用書簽的代碼,也很有問題,完全可以封裝在內部實現,外部直接一個CurrentProgram屬性執行就行了;
ProgramCompoent.ProgramBookmark的管理器對象ProgramCompoent.ProgramBookmarkManager對象,它負責管理所有跟ProgramCompoent.ProgramBookmark對象相關的工作;
View Code View Code企業應用架構 中的 規約模式 有所了解的人應該會比較熟悉這一節的內容,跟規約模式很像,但不是一個東西,側重點不同;語句組件全面的概念是將所有的調用都對象化,包括一些輸出、輸入、網絡調用等等,這樣才是全部的語句組件定義,還記得我們上面的訂單檢查對象嘛,那個也是語句組件之一;
View Code View CodeView Code
檢查流程代碼,OrderCheckFlows\OrderSubmitFlows類代碼:
View Code調用代碼:
View CodeLanguageComponentManager來對LanguageComponent管理,當然也要看需要不需要;可恢復語句管理器其實有很多文章可以做,因為它是所有語句組件的中心,這對於後面的持久化有很大的用處;