设计模式 一一一 策略模式

 

策略模式(Strategy):

	概念:对于一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以互相替换。
	
	目的:环境仅依赖抽象策略,但是不依赖具体的某个策略,故可以做到在不改变环境的前提下,进行策略的更换。
	
	优点:提供了管理一个算法族的解决方案,可以避免使用多重条件语句来判断具体采用哪个算法。
	缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类;策略模式会造成很多(策略)类。

	角色:
		环境(Context):持有一个Strategy类的引用。
		抽象策略(Strategy):所有的具体策略类必须实现此接口。
		具体策略(ConcreteStrategy):包装了相关的算法。
		

jdk中的策略模式:

	/**
	 * 环境ThreadPoolExecutor:持有一个RejectedExecutionHandler类的引用
	 */
	public class ThreadPoolExecutor extends AbstractExecutorService {
		private volatile RejectedExecutionHandler handler;
	}


	/**
	 * 抽象策略RejectedExecutionHandler
	 */
	public interface RejectedExecutionHandler {
		void rejectedExecution(Runnable r, ThreadPoolExecutor executor);
	}

	/**
	 * 具体策略AbortPolicy
	 */
	public static class AbortPolicy implements RejectedExecutionHandler {
		public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
			throw new RejectedExecutionException("Task " + r.toString() + " rejected from " + e.toString());
		}
	}


	

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值