在具体怎么使用策略模式之前,我们先自己定义一下什么策略,所谓策略就是做某种事的方法吧,比如我们去火星,可以使用SpaceX的火箭,可以乘坐BlueOrigine的火箭,也可以乘坐俄罗斯的火箭,这就是做同一件事,策略不同。
那么我们发现其实无论坐谁的火箭去火星,都要完成一个算法,去火星。所以,无论是何种算法,都要实现相同的函数接口:
我们和昨天学习的状态模式对比下,就发现其实差不过,都是把现在要做的任务,分配给自己的小弟去做。
只不过,状态模式在自己的状态类里做了某些操作之后,还要做状态转换。而策略模式就没有这个困扰,所以其实策略模式不需要转换这一步骤的,即使要转换,也代表我们之前要做的事已经完成了,现在已经是另外一件完整的事情了(只不过另外一件事也是和之前的目的差不过而已,例如都是去火星)。而不是像状态模式一样,在做同一件事情的时候,因为各种原因要变换不同的状态。
转换为代码: