设计模式十六:策略模式
什么是策略模式
鼓励使用多种算法来解决一个问题,其杀手级特性是能够在运行的时候透明地切换算法。
如果有两种算法,其中一种少量输入效果好,另一种对大量输入效果好,
则可以使用策略莫斯在运行时基于输入数据决定使用哪种算法。
使用场景
动态、透明地应用不同算法(目的相同但实现方案不同)
创建不同的样式表现,为了实现可移植性或动态地改变数据的表现
模拟:机器人行为中的所有不同之处都可以使用不同的策略来建模
典型案例
赶飞机,策略有三
1.乘坐公交或地铁,省钱
2.开车,不介意停车费
3.打车,时间紧急且没有自己的车
补充知识
选择不同排序算法的标准
1.需要排序的元素数量
2.算法的最佳/平均/最差时间复杂度
3.算法的空间复杂度
4.算法的稳定性
5.算法的代码实现复杂度
实例代码
# 实现检测在一个字符串中是否所有字符都是唯一的
import time
SLOW = 3 # 3秒
LIMIT = 5 # 5个字符
WARNING = 'too bad,you picked the slow algorithm :('
def pairs(seq): # 返回所有相邻字符对的一个序列
n = len(seq)
for i in range(n):
yield seq