策略(Strategy)模式是对算法的一种封装,是把使用算法的责任和算法本身分割开来,委托给不同的对象管理,从而可以实现算法的互换,从而一个类的行为或其算法可以在运行时更改,这种设计模式属于行为型模式。
策略模式在生活中和架构设计中非常常见。比如,商场打折,对于同样一类商品,不同的时间,促销方式和打折力度是不同的,这时候,促销方式和打折力度就是策略,对于这种应用场景来说,策略需要是可以随时变更的。还有个例子,比如排序,不同的对象,其排序依据不同。对于学生而言,有时候根据身高排序安排坐位,有时候根据成绩排序安排考场,这时候把这两种排序方式独立出来是一种比较好的方法,当需要安排坐位时,就使用“按照身高排序”的策略,当需要安排考场时就使用“按照成绩排序”的策略。从而一旦有新的需求和新的策略,只需要变更另外一个策略(比如“按年龄排序”)就OK了。
以加减乘除为例,不用策略模式
|
|
使用策略模式
|
|