策略模式

三国演义我想你们应该不陌生,可能都看过,其中有一个情节,我以为用来描述策略模式很是的合适,就是赵云陪着刘玄德娶孙尚香,诸葛孔明给了赵云三个锦囊,分别在不一样的时候打开锦囊,下面咱们来看看,怎么用代码来实现的吧.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

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息