狀態模式,命令模式和策略模式的區別

2021-07-22 19:51:16 字數 405 閱讀 5950

設計模式中有三個模式state, command, strategy,這三種設計模式都是行為型設計模式,在結構上又都很像,所以很多時候分不清楚。

區分這三種模式不要focus在結構上,這三種模式最主要是在使用意圖上有區別:

狀態模式:內部維護乙個狀態,會隨著public api的呼叫進行相應的狀態轉移。外界不需要知道狀態及其變化情況。

命令模式:根據客戶的請求封裝相應的命令,處理者就不用care這個命令是什麼,該怎麼處理。只用去呼叫統一的execute介面即可,當然不同的命令有不同的介面名稱,也可以不叫execute。

策略模式:你有很多不同的演算法,所以你可以封裝演算法,使用者執行相同的功能,但是使用不同的方法。這就是策略。

原文:hongchangfirst

hongchangfirst的主頁:

狀態模式和策略模式

策略模式 商場 方案,可以有多種 買x返y,z折扣,積分,直降a。一次 活動可以只選擇其中的一種 策略,彼此之間沒有影響。狀態模式 乙個人一天的工作狀態 早上精神百倍,下午還好,晚上很累。早中晚各是一種狀態,但只有三種狀態聯合起來,才能完成 一天的狀態 這件事情,相當於把一天的狀態分成了三個部分了。...

策略模式 狀態模式

當設計乙個物件可能在不同情況下有不同的行為時,一般使用的是父類 子類 多型過載的方法,person a new whiteperson person b new blackperson a.speak i m white b.speak i m black 但這樣做不好的地方在於 假如物件建立後了之...

狀態模式和策略模式比較

說到策略模式,我們最先想到的就是商店的收銀方式 不滿100,正常收費 超過100不滿300,超過的部分打八折 超過300,全價九折!解決這個問題最最普通的方法就是大量的if else 而它帶來的就是無情的難以維護,每次條件變更都會修改原 嚴重違反了開閉原則。顯而易見,策略模式的解決方式就是封裝了一系...