`

设计模式----策略模式(strategy)

 
阅读更多
本文参考别人设计模式的一个例子。

关于诸葛亮的三个锦囊妙计的估计。
IStrategy.java(三个妙计的接口类)的代码如下:
package com.designPattern.strategy.interfaces;

/**
 * 定义一个接口,这是诸葛亮老人家给赵云的三个妙计的接口
 * @author yangjianzhou
 *
 */
public interface IStrategy {
	
	public void operate();

}



接下来就是妙计的具体实现类

BackDoor.java代码如下:
package com.designPattern.strategy.interfacesImpl;

import com.designPattern.strategy.interfaces.IStrategy;
/**
 * 这是三个妙计中的一个,即是妙计接口的实现类
 * @author yangjianzhou
 * 找乔国老帮忙,使孙权不能杀刘备
 */
public class BackDoor implements IStrategy{

	@Override
	public void operate() {
       System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");		
	}

}



GrivenGreenLight.java代码如下:

package com.designPattern.strategy.interfacesImpl;

import com.designPattern.strategy.interfaces.IStrategy;
/**
 * 这是三个妙计中的第二个妙计,也是妙计接口的实现类
 * @author yangjianzhou
 * 求吴国太开个绿灯
 */
public class GivenGreenLight implements IStrategy{

	@Override
	public void operate() {
		System.out.println("求吴国太开个绿灯,放行");
	}
}



BlockEnemy.java代码如下:
package com.designPattern.strategy.interfacesImpl;

import com.designPattern.strategy.interfaces.IStrategy;

/**
 * 这是三个妙计中的最后一个妙计,实现了妙计接口
 * @author yangjianzhou
 * 孙夫人断后,挡住追兵
 */
public class BlockEnemy implements IStrategy{

	@Override
	public void operate() {
		System.out.println("孙夫人断后,挡住追兵");
	}

}



锦囊的类,用来装妙计

Context.java代码如下:
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();
	}
	
}



妙计的实施者:赵云

ZhaoYun.java代码如下:
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("-------------------第三个妙计使用完毕----------------");
		
	}
}



运行结果如下:

----------------刚刚到吴国的时候拆开第一个---------------
找乔国老帮忙,让吴国太给孙权施加压力
-------------------第一个妙计使用完毕----------------
-----------------刘备乐不思蜀了,拆开第二个---------------
求吴国太开个绿灯,放行
-------------------第二个妙计使用完毕----------------
-----------------孙权的小兵追来了,咋办?拆开第三个---------------
孙夫人断后,挡住追兵
-------------------第三个妙计使用完毕----------------
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics