策略模式

三國演義我想你們應該不陌生,可能都看過,其中有一個情節,我以爲用來描述策略模式很是的合適,就是趙雲陪着劉玄德娶孫尚香,諸葛孔明給了趙雲三個錦囊,分別在不一樣的時候打開錦囊,下面咱們來看看,怎麼用代碼來實現的吧.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

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息