美文网首页
2017.4.4 开始读这本书,希望能坚持读完

2017.4.4 开始读这本书,希望能坚持读完

作者: 敲一手烂代码 | 来源:发表于2017-04-04 22:44 被阅读10次

    1.第一个设计原则:对经常需要变化的代码,进行函数抽离
    今天学到的第一个设计原则是 把代码中经常变化的部分利用函数的形式进行抽离,和不需要经常更改的代码进行隔离,有好一点的封装意识, 也是OO思想中封装的体现
    2.针对接口编程
    什么时候应该使用父类,什么时候 需要使用接口———这是我懵逼的地方
    目前的理解是如果确定是什么“东西”的时候 我会考虑用继承 而只是有这个一个行为,但是没有具体确定行为实现的时候我会选择使用接口 不知道这么理解是否正确 还需要多写些代码 去理解其中的对与错

    目前应用的场景如下(不知道合适不合适 ,需要后续检验)

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        UITableViewCell <LJDealDetailCellInterface>*cell = [tableView dequeueReusableCellWithIdentifier:[self cellIdentifierForIndexPath:indexPath]];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        [cell setModel:_dataSource[indexPath.row]];
        return cell;
    }
    

    我在我开发的模块下的将不同样式的cell进行灌数据的行为(setModel)进行抽离,形成了一个接口,具体接口定义如下:

    @protocol LJDealDetailCellInterface <NSObject>
    
    @required
    - (void)setModel:(id)model;
    
    @end
    

    设计出发点:考虑到我的每一个cell样式都不怎么相同,进而个人感觉没有抽离公共父类的必要,但是进行数据赋值的行为都是要做的,因此抽出一个接口,让具体cell去实现,目前感觉是比较恰当的,而且我将所有的参数都封装model中保证形成一个通用的接口,即使样式不同的cell,由于设计的时候采用(id)类型,尽最大可能保证通用性,看了别的一些代码,对比以前其他人写的如下:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        UITableViewCell *cell = nil;
        if (indexPath.section == _infoSection) {
            
            [infoCell setCellData:self.detailResponseModel];
            cell = infoCell;
        } else if(indexPath.section == _extInfoSection){
               [instructioncCell   setCellData:[NSString stringWithFormat:@"%@", self.detailResponseModel.communityName]];    
            }
       
        return cell;
    }
    

    其中将多余代码进行删除,保留部分体现问题的代码,上述代码主要是根据具体row的找到对应的cell,进行具体的model赋值,我在我自己的vc类进行实现的时候,写了一个datasource数组进行有序存储model 因此没有判断的操作, 同时利用接口的函数 进行赋值,相对来说起码在代码量上会少不少
    3.多用组合,少用继承
    这个认为还需要多具体业务场景,组合通常考虑的是有一个或者若干个行为的,多个动作的组成。继承直接代表了是一个。例如男人、女人都是人,也就是父类是人。但是所有的动物都有“吃” 这个行为,仅仅是将吃放在“人”这个类中就不合适了,应该抽出来 做一个接口,所有动物都可以 有这个行为 。

    相关文章

      网友评论

          本文标题:2017.4.4 开始读这本书,希望能坚持读完

          本文链接:https://www.haomeiwen.com/subject/gdnzottx.html