13、设计模式:策略、备忘录与迭代器模式解析

设计模式:策略、备忘录与迭代器模式解析

1. 策略模式

1.1 策略模式概述

在选择排序算法时,多种因素会产生影响,关键在于是否要统一应用单一算法,答案是否定的。更实际的做法是依据具体情况,从多种排序算法中挑选最合适的,这就是策略模式的核心。

策略模式倡导使用多种算法解决问题,其显著特点是能在运行时透明地切换算法,客户端代码不会察觉到这种变化。例如,有两种算法,一种在处理小输入规模时表现出色,另一种在处理大输入规模时更优,那么就可以在运行时根据输入数据选择合适的算法。

1.2 现实世界示例

  • 前往机场 :若想省钱且出发早,可选择公交或火车;若不介意停车费且有车,可自驾;若没车但赶时间,可乘坐出租车。这体现了在成本、时间和便利性等方面的权衡。
  • 软件应用 :Python 的 sorted() list.sort() 函数就是策略模式的实例,它们接受一个命名参数 key ,该参数本质上是实现排序策略的函数名。

1.3 使用场景

当需要动态且透明地应用不同算法时,策略模式是理想之选。这里的不同算法指的是同一算法的不同实现,虽然结果相同,但各实现的性能和代码复杂度存在差异,如顺序搜索和二分搜索。此外,策略模式还可用于创建不同的格式化表示,以实现可移植性或动态改变数据表示。

1.4 策略模式实现

在函数并非一等公民的语言中,每个策略需在不同类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值