怎么避免冗余的if...else
举个例子,在 iOS 开发中,经常会遇到在设置 tableViewCell 时需要根据 indexPath 来设置不同 cell ,一般代码可能会是下面这个样子:
方法一:封装(表驱动法)
SEL methods[][3] = {
{ @selector(getFirstCell:) },
{ @selector(getSecondCell:) },
{ @selector(getThirdCell:) },
};
SEL sel = methods[indexPath.section][indexPath.row];
[self performSelector:sel withObject:indexPath];
方法二:策略模式
方法三:封装cellViewModel。用工厂模式造cell
在MVVM中,dataSource 里面只存放一堆抽象的 cellViewModel ,并通过工厂来获得具体的 cell ,工厂可以用数据来驱动。