(设计模式)策略 > 本篇文章由一文多发平台[ArtiPub](https://github.co

策略模式:针对不同的情况和场景,使用相应的处理策略。不同的策略,处理的逻辑各不相同。

例如;在 JDK 的线程池配置参数里面,就有一个拒绝策略的参数。这个拒绝策略是线程池最后保险机制,一旦线程池处理请求达到饱和就会触发拒绝策略,而线程池默认的拒绝策略就是丢弃策略(AbortPolicy),除此之外还有另外三种策略,如下图:

(设计模式)策略  > 本篇文章由一文多发平台[ArtiPub](https://github.co

这四种拒绝策略实现 RejectedExecutionHandler 接口,该接口定义了一个 rejectedExecution 方法,所有具体拒绝策略就在该方法实现具体的逻辑。如下:

(设计模式)策略  > 本篇文章由一文多发平台[ArtiPub](https://github.co

在线程池的参数中,就是使用 RejectedExecutionHandler 作为参数类型:

(设计模式)策略  > 本篇文章由一文多发平台[ArtiPub](https://github.co

结合里氏替换原则和多态特性,线程池可以传入所有 RejectedExecutionHandler 的子类,并表现出不同的拒绝行为。

模式分析:

1、根据不同场景和情况,制定不同的策略来处理。在代码层面体现就是:一个类对应一个策略,结合里氏替换和多态,就可以避免用 if-else 来集中处理各种情况。

(设计模式)策略 > 本篇文章由一文多发平台[ArtiPub](https://github.co

上一篇:(实用篇)PHP定时任务获取微信access_token


下一篇:Webpack 从入门到入门