策略模式和狀態模式的區別

2021-09-28 16:38:33 字數 856 閱讀 2914

策略模式和狀態模式的類圖相同,目的都是為了解耦,但是還有很多的區別

public classs 我

//買車

void buycar();

}

public inte***ce grade(

public void hasmoney();

)

public class has10 implements grade

}

public class has100 implements grade

}

public class has1000 implements grade

}

public class client
可以看到只有針對娛樂有不同方法,而其他的專案沒有影響,此為策略模式

我類的修改

public classs 我

//打扮

void dressup(

grade.dressup();

);//娛樂

void entertainment(healthcare healthcare)

//買車

void buycar(

grade.buycar();

);}

呼叫

public static void main(string args)
可以看到每一次的變化,我的整個檔次都變了,無論是娛樂還是穿衣服,所以此為狀態模式

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

設計模式中有三個模式state,command,strategy,這三種設計模式都是行為型設計模式,在結構上又都很像,所以很多時候分不清楚。區分這三種模式不要focus在結構上,這三種模式最主要是在使用意圖上有區別 狀態模式 內部維護乙個狀態,會隨著public api的呼叫進行相應的狀態轉移。外界...

狀態模式和策略模式

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

狀態模式和策略模式比較

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