设计模式 一一一 策略模式
策略模式(Strategy): 概念:对于一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以互相替换。 目的:环境仅依赖抽象策略,但是不依赖具体的某个策略,故可以做到在不改变环境的前提下,进行策略的更换。 优点:提供了管理一个算法族的解决方案,可以避免使用多重条件语句来判断具体采用哪个算法。 缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类;策略模式会造成很多(策略)类。 角色: 环境(Context):持有一个Strategy类的引用。 抽象策略(Strategy):所有的具体策略类必须实现此接口。 具体策略(ConcreteStrategy):包装了相关的算法。 jdk中的策略模式: /** * 环境ThreadPoolExecutor:持有一个RejectedExecutionHandler类的引用 */ public class ThreadPoolExecutor extends AbstractExecutorService { private volatile RejectedExecutionHandler handler; } /** * 抽象策略RejectedExecutionHandler */ public interface RejectedExecutionHandler { void rejectedExecution