策略模式,把算法的实现和处理逻辑进行分离,选定特定的算法实现,将其填到context中去,然后由context来调用这个算法进行处理(处理流程对每个算法都是等同的)这样客户端只要持有一个context实例,然后为它设定相应的策略算法就可以了,如此可以方便添加不同的算法实现(典型应用:商城打折)
在具体应用中,很可能会出现,不同的策略算法所需要的数据个数及类型不相同,有两种常用的扩展方法,
1:扩展上下文,把数据都传到上下文的环境里,这样策略算法直接到上下文中去取,但这样可能会对那些特定算法所需要的数据造成浪费。
2:把某个策略算法额外需要的数据,直接由客户端传给策略算法,这样的坏处是数据的获取不统一,一部分来自上下文,一部分来自客户端
在具体应用中,很可能会出现,不同的策略算法所需要的数据个数及类型不相同,有两种常用的扩展方法,
1:扩展上下文,把数据都传到上下文的环境里,这样策略算法直接到上下文中去取,但这样可能会对那些特定算法所需要的数据造成浪费。
2:把某个策略算法额外需要的数据,直接由客户端传给策略算法,这样的坏处是数据的获取不统一,一部分来自上下文,一部分来自客户端