最近一直在学习设计模式,但是一直没有时间来总结,关于工厂模式因为还有一个抽象工厂没有学习完,那么今天就现在策略模式开始进行总结。
策略:指计策,谋略。一般是指:1. 可以实现目标的方案集合;2. 根据形势发展而制定的行动方针和斗争方法;3. 有斗争艺术,能注意方式方法。
策略模式:定义了算法家族,分别封装起来,让他们之间相互替换,这种模式不会影响到使用算法的客户。在策略模式中,一个类的行为中或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
应用代码:
策略工厂:用来调用具体的策略
抽象策略类:
具体的策略类:
客户端代码:
1.策略模式的优缺点
优点:1)简化了单元测试,每个算法都有自己的类,可通过自己的接口单独测试。 2)避免使用多重条件的判断 3)每个算法可以自由切换 4)扩展性良好
缺点:1)策略类会增多 2)客户端不能使用多个策略类,客户端每次只能使用一个策略类,不支持使用一个策略类完成部分功能后再使用另一个策略类来完成剩余功能的情况
2.使用场景
1)、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。
2)、一个系统需要动态地在几种算法中选择一种。
3)、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。
3.应用实例:
1)、诸葛亮的锦囊妙计,每一个锦囊就是一个策略。 2)、旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。 3)超市促销活动。打折、满减等