iOS 使用category将复杂的类拆分

来源:互联网 发布:淘宝店铺出售法律风险 编辑:程序博客网 时间:2024/06/03 22:51

在开发过程中,我们应该尽量保证代码的整洁性,方法尽量的简短,一个方法只做一件事情,而类也不应该过于复杂。很多时候,我们会一直往一个类里面添加代码,最终,这个类可能成为一个“庞然大物”。在iOS开发中,我们可以使用category将类进行拆分。

如下图所示,我要实现一个做题功能,上方矩形框是一个工具栏,为答题提供一些辅助功能,下方矩形框用来显示题目和作答。


我为这个类命名为PracticeVC,自己画了了类图(UML都是我自己瞎琢磨,也不知道这样画对不对)。


它包含一个AnswerTopView和一个UIScrollView,UIScrollView又包含一堆东西。

进入PracticeVC,以后,我需要:

1.请求题目数据,解析

2.设置AnswerTopView的点击事件

3.设置UIScrollView(显示题目、切换题目、设置答题卡)

4.提交用户作答数据。



虽然,我已经封装了两个类AnswerTopView和DisplayArea,在PracticeVC中只需要实现代理方法,指明点击工具栏上的按钮要做什么,初始化DisplayArea,AnswerCardView。但我仍然感觉非常的臃肿,这个类很长,好几百行。我有强迫症,我要拆分这个类。

iOS中category使用的比较多,我们常常会实现各种XX+Helper,非常好用。category可以为类添加方法(可能会覆盖类原有方法)和属性(有些书上认为只有在匿名category中添加属性才是合适的,其他的category不应该添加属性)。我们可以借助这一特性来拆分类,将其拆分到不同的category中,查看系统的类的头文件,基本都使用大量的category,相信原因中肯定有一条是避免类太复杂。

为此,我将请求题目和提交用户作答数据拆成一个类目PracticeVC+PVCServer,将上面的AnswerTopView的设置管理拆成另外一个类目PracticeVC+PVCTopView。我将需要用到的属性,都在PracticeVC.h中声明,类category中只有方法。这样拆分以后,PracticeVC有180行,PVCTopView有80行,PVCServer有100行。如果功能发生改变,我们只需要修改相应功能所在的文件就可以了。这样拆分以后,对于继承,也不会有任何影响,在PracticeVC中import这两个category,子类也就有了这些方法。







0 0
原创粉丝点击