策略模式和狀態模式的類圖相同,目的都是為了解耦,但是還有很多的區別
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 而它帶來的就是無情的難以維護,每次條件變更都會修改原 嚴重違反了開閉原則。顯而易見,策略模式的解決方式就是封裝了一系...