如何将大类拆分成更小的类?

时间:2014-06-02 10:35:07

标签: ios objective-c ios7

我正在重构iOS应用程序,其中一个类很庞大。它包含三个关键功能。检查更新,下载更新和处理更新。

我的问题是,我将如何将它们拆分为单独的类(文件),然后可以将它们包含在核心类文件(TableViewController)中并从那里运行必要的函数?

目前,所有的逻辑都在一个TableViewController类中,这并不理想。

我喜欢与此类似的结构,因为我觉得它最有意义:

  • TableViewController
  • // import CheckForUpdates.h
  • // import DownloadUpdates.h
  • // import ProcessUpdates.h

我不知道"键入"为了实现这个目标,需要三个文件的类,如果这是有道理的。我已经获得了核心类(TableViewController),其中包含了这三个额外的类。这3个额外的课程是什么类型?他们是NSObjects吗?他们甚至需要上课吗?

抱歉模糊不清。我试图抽象出三个关键流程的功能,使代码更整洁,更易于管理。 ' CheckForUpdates'选项可能会在代码中的多个位置使用。

1 个答案:

答案 0 :(得分:3)

在Obj-C中,有三种基本的分割方法:

  1. 您使用实用程序方法并使用类别将其添加到系统类。典型示例是使用NSDateNSURL的方法。在这种情况下,您可以添加一种方法来检查NSURLNSURLConnection的更新。

  2. 您可以采用一组方法并在控制器上创建一个类别 TableViewController+CheckForUpdates.h。这实际上不会拆分类,但会将方法拆分为不同的文件。

  3. 服务类 - 您可以使用一项功能并创建一个新类,例如MyUpdater。这可以扩展NSObject但是可以扩展任何其他类。如果需要,即使是服务也可以拥有共同的祖先。

  4. 我不完全确定从“下载更新”中拆分“检查更新”是否合理。两种行动都必须有一些共同的功能。

    在这种情况下,我相信第三种选择是最好的,但不要让控制器看到3个不同的类。理想情况下,控制器应将更新视为一个具有3种方法的类 - 一种用于检查更新,一种用于下载更新,一种用于处理它们。您可以再次将updater类的实现拆分为更多类,但控制器应该看到一个简单的接口。