码迷,mamicode.com
首页 > 其他好文 > 详细

策略模式

时间:2015-03-13 14:26:39      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

—抽象策略角色: 策略类,通常由一个接口或者抽象类实现。
—具体策略角色:包装了相关的算法和行为。
—环境角色:持有一个策略类的引用,最终给客户端调用。
package mode.strategy;

/**
 * @ClassName: IStrategy
 * @Description: 定义了一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口
 * @author mpc
 * @date 2014年12月31日 下午4:10:34
 * 
 */
public interface IStrategy {
	public void operate();
}

package mode.strategy;

/** 
* @ClassName: BackDoor 
* @Description: 找乔国老帮忙,使孙权不能杀刘备
* @author mpc 
* @date 2014年12月31日 下午4:12:19 
*  
*/
public class BackDoor implements IStrategy {

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

}

package mode.strategy;

/** 
* @ClassName: GivenGreenLight 
* @Description: 求吴国太开个绿灯 
* @author mpc 
* @date 2014年12月31日 下午4:14:26 
*  
*/
public class GivenGreenLight implements IStrategy {

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

}

package mode.strategy;

public class BlackEnemy implements IStrategy {

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

}

package mode.strategy;

/**
 * 
 * 锦囊
 * 
 * */
public class Context {
	private IStrategy strategy;

	// 构造函数,要使用带有哪个妙计的锦囊
	public Context(IStrategy stragtegy) {
		this.strategy = stragtegy;
	}

	public void operate() {
		this.strategy.operate();
	}
}

package mode.strategy;

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 BlackEnemy());
		context.operate();
		System.out.println("---------------------终了----------------------------------------------------");
	
	}
}


策略模式

标签:

原文地址:http://blog.csdn.net/u012613903/article/details/44240139

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!