概述:
网上对策略模式的解释有很多,最常见也最通用的就是“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。
而以博主对策略模式的理解来看,重点在最后面那句话,"使得它们可以互换".当我们在面对一个目标,而又有多个可以实现目标途径的算法的时候。这个模式就可以被我们所用(当然本身这个模式就是为了适应这种情景)
uml类图:
具体解释:
策略模式包含一组算法,加一个包装算法的Context类
一个算法基类,和一组算法子类
一个包含一个基类实例的Context
每当我们需要改变算法的时候,只需要重新实例化一遍Context类
使用心得:
在面对一个问题有多种算法,又需要频繁的去改变使用算法种类的时候,我们可以使用策略模式,不过值得注意的是Context类的初始化是直接用算法子类去初始化的。
也就是说我们在使用策略模式的时候,需要自己去认识各个算法的不同之处,这无疑会增加使用者的成本。
关于简单工厂模式和策略模式的结合:
策略模式给了我们动态使用多种不同算法的解决方案,但是使用策略模式就意味者使用者得清楚的明白各种算法的不同之处,这里我们可以使用简单工厂模式来封装
算法类的创建过程。这样使用者就不用过多的关注算法类本身
关于策略模式和简单工厂模式的区别:
策略模式是行为模式,它关注不同算法的使用,简单工厂是创建行模式,它关注的是不同算法的创建,自然而然的这两种模式就有结合的可能行