在阅读Splitter方法的源码过程中注意到它使用到了设计模式中的策略模式。
首先,我们来看策略模式的概念性介绍。
策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。 ——此段来自网络。
从结果论看,策略模式即为了使类的行为或其核心算法能在运行时更改,根据不同场景适用不同的算法。
一般策略模式具备三要素:
- 抽象策略
- 具体策略
- 环境
联系Splitter方法我们来具体分析
我们首先来看Strategy 是个什么东西
Strategy 是一个私有接口,属于上文所说的三要素中的抽象策略。
还注意到Splitter的构造方法私有化了,这一般是工厂模式的常用套路。
那我们来追踪工厂方法