策略模式在swift中的体现
2021-12-01 本文已影响0人
梁森的简书
概念
策略模式属于行为模式,定义了一系列可以替换的对象,可在run time时设置或切换。可通过不同的策略实现不同的功能。
例子
在swift中我们定义一个协议,协议中有一个方法(策略),多个类可遵守该协议,并实现协议中的方法,但各自的具体实现不同。
使用不同的类,得到不同的结果。
想象这样一个场景:
从控制器A跳转到控制器B有多种情况,且不同的情况对应不同的结果。我们一般的做法是创建控制器B的时候传入一个type类型,在B中根据不同的type计算不同的结果。但这样做有两个问题:1. 如果情况再增加,我们需要更改B中的代码(违背了设计模式中的开闭原则)。 2. B中写了太多自己不需要知道的具体逻辑
使用策略模式的结果:
我们可以根据不同的情况创建对应的一个类,这个类遵守某个协议,并实现了协议中的方法,不同情况对应的不同结果都在多个类中实现的协议方法中分别实现。
这样设计遵守了设计原则中的开闭原则,同时具体不同的实现逻辑放到了不同的类中。
demo地址
https://github.com/pro648/BasicDemos-iOS/tree/master/StrategyPattern