前言:学习设计模式,不要拘泥于哪一种设计模式,我认为,学习设计模式是学习她的思想,本文以一个实例来讲策略模式,并讲一下策略模式在spring中的应用。
实例:
第一步:我想写一个方法对任意类型的数组进行排序,这个排序方法定义好之后,排序的这个方法我不想变动了,
定义一个接口
对于实现了这个接口的类,都可以调用第一张图片中sort方法进行排序,我这里定义了一个Cat类,实现了上述接口
第二步: 第一步中我们是根据Cat的身高比较大小,现在我们想根据体重比较大小,比较方式改变了,第一步就实现不了了,因为Cat类中只能实现一种排序,不能写多种排序,要想实现对于Cat类动态的规则进行排序,怎么做呢,首先肯定 离不开多态了。接下来就要讲策略模式了。
首先 定义一个接口Comparator,让子类实现这个接口,比较规则由子类决定,
这是一个比较规则: 根据Cat的身高比较大小
这是一个比较规则: 根据Cat的体重比较大小
之前在Cat类中,只是实现了一种比较规则,现在我们可以动态的指定比较规则,我们要实现哪种比较规则,只需要new 一个这个规则,