在狀態模式下,我們每個人都知道自己會做什麼,應當做什麼,事情本事是固定的,只是根據當前狀態的改變而去選擇不同的事情去做,狀態本身可能會隨著時間的推移不斷的增加或減少。在策略模式下,我們每個人不知道自己會做什麼,應當做什麼,不論什麼事情當需要去做的時候就去完成它,事情本身可能是千變萬化的。
//生活中的每個人
public class person
//做我們應當去做的事情
public void dosomething()
}
每個人都會有很多事情可以去做。但是,做的最多的事情無非是兩種,一種是工作,另一種就是生活。當然有的人會去健身,有的人也會去購物,對於不同的人我們可以根據需要去增加或者減少。
//生活中的想法
public inte***ce strategy
//休息
public class reststrategy implements strategy
}//工作
public class workstrategy implements strategy
}
回歸到日常生活中,當我們選擇去工作,就去努力奮鬥,當選擇休息,就去享受生活。
public class client
}
設計模式 行為型 策略模式
更好的實現開閉原則 ocp,openclosedprinciple 即對於擴充套件是開放的,對於修改是關閉的,不修改原有 只擴充套件 策略模式包括三個角色 context 環境類 使用演算法策略,維持乙個抽象策略類的引用例項 strategy 抽象策略類 將所有的策略抽象出來,在該類宣告抽象方法或者...
行為型設計模式之 策略模式
緊接著上面的模板方法設計模式,當使用者支付時,其實使用者是有優惠活動可以享受的,但是每個使用者的具體情況不同,所選擇的優惠活動是不一樣的,有滿減活動 首次購活動 新會員活動,等等一系列優惠。為了避免一系列的if else的書寫,我們使用策略模式進行優化 首先是打折的抽象介面 public inte ...
策略模式(行為型)
思考問題 乙個書店的某類書是免費的,某類書是固定1元的,某類書是按折扣算的 比如88 同一類別的書本 一樣 假定顧客只買一類書,在設計書店bookstore類時應該如何計算顧客買書的費用?解答 1.你有可能不知道如何設計,畢竟上面的計算規則不一樣 並不是一類書8折另一類書9折那樣好計算 2.既然這樣...