N個if else跟策略模式 狀態模式

2021-08-31 15:04:24 字數 667 閱讀 5222

[size=large] 罈子裡面有很多帖子,提到說怎麼解決if else過來帶來的判斷問題,每次這個一出來,下面回帖都是策略模式 狀態模式[/size]

但實際真能解決嗎?

[size=large]先說狀態模式吧[/size]

[img]

[size=large] 如圖,現在有平行的三個策略,但是使用哪個策略是在context裡面決定的,那麼if else 有替換嗎?

只不過if else 裡面的東西被封住了,if else 什麼的還是在那擺著

再說狀態模式[/size]

[img]

[size=large] 狀態模式關鍵在context裡面有乙個儲存狀態的東西,然後呼叫request方法,下面的a,b類是不是平行的,不可替換的,他們對應不同狀態,那到底什麼狀態,在context裡面還是得判斷,然後呼叫不同狀態的handle

if else 在也沒解決,只不過把需要判斷的內容要你在其它地方判斷好,這裡直接set對應狀態[/size]

個人理解:策略是處理方式有多種,都是平行的,用if else選擇執行哪種

狀態也有多種,不同狀態對應處理不同,但不能替換不是平行的原因是由於在context呼叫時候,已經set它的狀態了

這只是簡單運用模式,比如狀態模式模擬工作流的時候,乙個狀態處理,對應狀態改變,然後更加狀態的改變再呼叫不同的狀態處理

策略模式 工廠模式優化if else

2.優化if else 思路描述 構建支付型別業務處理介面,不同的支付型別實現該介面並重寫介面方法實現支付型別的具體處理邏輯 構建支付型別工廠,根據對應支付型別獲取支付型別業務處理介面實現類.2.1構建支付型別介面 public inte ce paytypehandleservice2.2 根據不...

策略模式優化大量if else

在 編寫的個過程中難免會碰到使用到if else的情況,太多的if else會使 變的臃腫並且難以理解,然後想到了之前寫策略模式是可以對它進行優化的,的規範和易懂性我認為對乙個優秀程式設計師來說是必要的。平常經常碰到的 author cjd description 使用if.else臃腫的 retu...

使用策略模式消除if else

最近專案中遇到如下情況 有乙個操作叫平帳,然後要對多個不同的款項進行平帳,目測有72種。然後平帳的方法只有乙個,在那個平帳方法裡面,判斷是哪一種款項,然後不同的款項有不同的處理邏輯。if 款項a if 款項b if 款項c 這個就很可怕了。因此使用策略模式來消除掉if else。先看使用策略模式之後...