设计模式----策略模式(strategy)
本文参考别人设计模式的一个例子。
关于诸葛亮的三个锦囊妙计的估计。
IStrategy.java(三个妙计的接口类)的代码如下:
package com.designPattern.strategy.interfaces;/** * 定义一个接口,这是诸葛亮老人家给赵云的三个妙计的接口 * @author yangjianzhou * */public interface IStrategy {public void operate();}
package com.designPattern.strategy.interfacesImpl;import com.designPattern.strategy.interfaces.IStrategy;/** * 这是三个妙计中的一个,即是妙计接口的实现类 * @author yangjianzhou * 找乔国老帮忙,使孙权不能杀刘备 */public class BackDoor implements IStrategy{@Overridepublic void operate() { System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");}}
package com.designPattern.strategy.interfacesImpl;import com.designPattern.strategy.interfaces.IStrategy;/** * 这是三个妙计中的第二个妙计,也是妙计接口的实现类 * @author yangjianzhou * 求吴国太开个绿灯 */public class GivenGreenLight implements IStrategy{@Overridepublic void operate() {System.out.println("求吴国太开个绿灯,放行");}}
package com.designPattern.strategy.interfacesImpl;import com.designPattern.strategy.interfaces.IStrategy;/** * 这是三个妙计中的最后一个妙计,实现了妙计接口 * @author yangjianzhou * 孙夫人断后,挡住追兵 */public class BlockEnemy implements IStrategy{@Overridepublic void operate() {System.out.println("孙夫人断后,挡住追兵");}}
package com.designPattern.strategy;import com.designPattern.strategy.interfaces.IStrategy;/** * 这是装妙计的锦囊 * @author yangjianzhou * */public class Context {private IStrategy strategy;//在锦囊中转入你要使用的妙计public Context(IStrategy strategy){this.strategy = strategy;}//实施妙计了public void operate(){this.strategy.operate();}}
package com.designPattern.strategy;import com.designPattern.strategy.interfacesImpl.BackDoor;import com.designPattern.strategy.interfacesImpl.BlockEnemy;import com.designPattern.strategy.interfacesImpl.GivenGreenLight;/** * 赵云是妙计的实施者 * @author yangjianzhou * */public class ZhaoYun {public static void main(String[] args) {Context context ;System.out.println("----------------刚刚到吴国的时候拆开第一个---------------");context = new Context(new BackDoor());context.operate();System.out.println("-------------------第一个妙计使用完毕----------------");System.out.println("-----------------刘备乐不思蜀了,拆开第二个---------------");context = new Context(new GivenGreenLight());context.operate();System.out.println("-------------------第二个妙计使用完毕----------------");System.out.println("-----------------孙权的小兵追来了,咋办?拆开第三个---------------");context = new Context(new BlockEnemy());context.operate();System.out.println("-------------------第三个妙计使用完毕----------------");}}
----------------刚刚到吴国的时候拆开第一个---------------找乔国老帮忙,让吴国太给孙权施加压力-------------------第一个妙计使用完毕---------------------------------刘备乐不思蜀了,拆开第二个---------------求吴国太开个绿灯,放行-------------------第二个妙计使用完毕---------------------------------孙权的小兵追来了,咋办?拆开第三个---------------孙夫人断后,挡住追兵-------------------第三个妙计使用完毕----------------