情景:把一堆算法塞到同一段代码中,然后使用if-else
或者switch-case
条件语句来决定要使用哪个算法?这些算法可能是一堆相似的类函数或方法,用以解决相关的问题。例如验证数据输入的情形,数据本身可以是任何数据类型(如CGFloat,NSString,NSInteger等),每种数据类型需要不同的算法。如果把每一种算法封装成一个对象,那么就能消除根据数据类型决定使用什么算法的一堆if-else
或switch-case
语句。
面向对象软件设计中,我们可以把相关算法分离为不同的类,成为策略,对应的设计模式称为策略模式。