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