三國演義我想你們應該不陌生,可能都看過,其中有一個情節,我以爲用來描述策略模式很是的合適,就是趙雲陪着劉玄德娶孫尚香,諸葛孔明給了趙雲三個錦囊,分別在不一樣的時候打開錦囊,下面咱們來看看,怎麼用代碼來實現的吧.java
-------------------------------分割線------------------------------------------ide
咱們先定義一個計謀接口,裏面只有一個方法,就是計策this
public interface KongMingStrategy { //裏面放着孔明的錦囊妙計 void operate(); }
錦囊接口有了,那麼咱們就須要定義三個錦囊的實現了嘛,代碼以下code
public class OneStrategy implements KongMingStrategy{ @Override public void operate() { System.out.println("找喬國老幫忙,讓將來岳母(吳國太)給孫權施加壓力"); } } public class SecondStrategy implements KongMingStrategy{ @Override public void operate() { System.out.println("讓將來岳母(吳國太)開綠燈,娶孫尚香"); } } public class ThirdStrategy implements KongMingStrategy{ @Override public void operate() { System.out.println("追兵來了,讓岳母(吳國太)斷後"); } }
錦囊妙計都有了,咱們須要有個地方來放置錦囊對吧,否則,萬一趙雲不當心把錦囊掉了,那不就傻逼了,別說娶孫尚香了,劉玄德跟趙雲的命都要丟江東了,這徹底就是越2塔搶琴女,有去無回啊.接口
public class Box { //孔明的錦囊 private KongMingStrategy kongMingStrategy; public Box(KongMingStrategy kongMingStrategy) { this.kongMingStrategy = kongMingStrategy; } //打開孔明的錦囊 public void openStrategy(){ kongMingStrategy.operate(); } }
如今錦囊有了,裝錦囊的盒子有了,咱們就須要一個打開錦囊的趙雲了class
public class ZhaoYun { public static void main(String[] args){ Box box; System.out.println("劉玄德去吳國娶孫尚香....."); System.out.println("劉玄德到了吳國....."); box = new Box(new OneStrategy()); System.out.print("趙雲打開第一個錦囊,上面寫着:"); box.openStrategy(); System.out.println("孫權不願嫁妹妹"); box = new Box(new SecondStrategy()); System.out.print("趙雲打開第二個錦囊,上面寫着:"); box.openStrategy(); System.out.println("孫權要殺劉玄德"); box = new Box(new ThirdStrategy()); System.out.print("趙雲打開第三個錦囊,上面寫着:"); box.openStrategy(); System.out.println("劉玄德帶着小媳婦回到了荊州,過上了沒羞沒臊的生活"); } }
執行後,咱們會發現,咱們自始至終都沒有改變盒子調用的方法,惟一變化的可能就是不一樣的時候,傳入不一樣的錦囊實現,這就是咱們的策略模式,定義好接口,讓接口的實現能夠相互替換,卻並不影響接口的調用方,UML類圖以下方法
到這,文章就結束了!im
以上,均爲本人我的理解,比較簡單的理解,或許跟各位看官理解的有出入,歡迎指正交流static
歡迎轉載,請註明出處跟做者,謝謝!img