說明這個概念之前最好先給出不使用這個概念的**,常見的需要使用表驅動的場景有如下三種情況:
場景1:不同條件不同資料
if (key = "key a")
else if (key = "key b")
場景2:不同條件不同行為
if (key = "key a")
else if (key = "key b")
場景3:不同條件依次執行
執行 key a 相關的行為。
執行 key b 相關的行為。
有了上面三種場景,再理解表驅動法就比較直觀了,直接看表驅動的**:
表 = {
"key a": ,
"key b": ;
注:很多語言都支援將「行為」作為一等公民,如:c和c++的函式指標、c#的委託、js的函式等。
有這樣乙個表以後,替換上面的三種**就非常直接了,這裡不再贅述。思考
使用oo替換表驅動法
對於某些不支援oo的語言,表驅動法非常有用,對於支援oo的語言,如果表中的資料項和行為項總數如果超過了3個,建議引入簡單的繼承體系,將資料項和行為專案提取為新型別體系的成員,然後將表修改為工廠。
表的key能否為「行為」
當然可以,只是在從表中獲取行時,使用這個「行為」決定是否返回行。
如何用表驅動法模擬23個設計模式?
完全有可能的,有興趣的朋友可以模擬一下管道過濾器模式(這個是架構模式)。
18章表驅動法
18章表驅動法的使用 1.含義 表驅動法 其實是一種程式設計模式 從表裡面查詢資訊而不使用邏輯語句 我的理解是 遇到複雜的邏輯時,考慮把邏輯資料存放到表中,通過查詢表來解決,不用通過寫複雜的 if else來解決,而且這樣迭代性 維護性也好。2.使用表啟動法的兩個問題及解決思路 1 如何去訪問表 1...
表驅動法應用的難點
分類 coding 2013 07 31 23 21 550人閱讀 收藏舉報 coding 好的 總是將複雜的邏輯以分層的方式降低單個層次上的複雜度。複雜與簡單有乙個相互轉化的過程。在涉及編碼解析的功能時,常常有乙個帶有長長一串case的switch,而且會不斷增長。為每乙個case搞個類就太誇張了...
黑盒測試 判定表驅動法
例子 印表機是否能列印出來正確的內容,有多個因素影響,包括驅動程式 紙張 墨粉等。為了簡化問題,不考慮中途斷電 卡紙等因素的影響 一 列出條件樁和動作樁 條件樁 1 驅動程式是否正確?2 是否有紙張?3 是否有墨粉?動作樁 動作樁有兩種 列印內容和不同的錯誤提示,並且假定 優先警告缺紙,然後警告沒有...