我正在研究编写模块化清洁代码,同时使用UITableView
& UICollectionView
我找到了关于Objc.io编写较轻的ViewControllers的好博客。在遵循作者提供的实践的同时,我提出了一个段落,其中没有详细说明Same Cell type and Multiple Model Object
,只是描述性的。
我只是想问一下是否有人建议我们如何以更加模块化的方式实现这一目标?
段落说的是这样的,
In cases where we have multiple model objects that can be presented using the same cell type, we can even go one step further to gain reusability of the cell. First, we define a protocol on the cell to which an object must conform in order to be displayed by this cell type. Then we simply change the configure method in the cell category to accept any object conforming to this protocol. These simple steps decouple the cell from any specific model object and make it applicable to different data types.
任何人都可以解释它的含义吗? 我知道这不是主题,但它可以帮助某人编写更好的代码。
答案 0 :(得分:0)
这与引入ViewModel或ViewAdapter类似。一个简单的例子是单元格显示任何项目的描述。假如你给单元格一个用户,它会显示他/她的全名。如果您提供邮件,则会显示主题。关键是细胞并不关心究竟给它的是什么(用户或邮件)。它只需要描述每个项目,因此需要帮助它从不同类型的每个模型中提取描述字符串。这就是ViewModel。
然后代替:Cell =>用户或单元格=>新闻。使用:Cell => ViewModel =>用户或单元格=> ViewModel =>新闻。代码示例:
class ViewModel {
private Object _item;
public ViewModel(Object item) {
_item = item;
}
public String getDescription() {
if (_item instanceof User) {
return ((User)_item).getFullName();
} else if (_item instanceof Mail) {
return ((Mail)_item).getSubject();
}
return "";
}
}