我正在重构iOS应用程序,其中一个类很庞大。它包含三个关键功能。检查更新,下载更新和处理更新。
我的问题是,我将如何将它们拆分为单独的类(文件),然后可以将它们包含在核心类文件(TableViewController)中并从那里运行必要的函数?
目前,所有的逻辑都在一个TableViewController类中,这并不理想。
我喜欢与此类似的结构,因为我觉得它最有意义:
我不知道"键入"为了实现这个目标,需要三个文件的类,如果这是有道理的。我已经获得了核心类(TableViewController),其中包含了这三个额外的类。这3个额外的课程是什么类型?他们是NSObjects吗?他们甚至需要上课吗?
抱歉模糊不清。我试图抽象出三个关键流程的功能,使代码更整洁,更易于管理。 ' CheckForUpdates'选项可能会在代码中的多个位置使用。
答案 0 :(得分:3)
在Obj-C中,有三种基本的分割方法:
您使用实用程序方法并使用类别将其添加到系统类。典型示例是使用NSDate
或NSURL
的方法。在这种情况下,您可以添加一种方法来检查NSURL
或NSURLConnection
的更新。
您可以采用一组方法并在控制器上创建一个类别
TableViewController+CheckForUpdates.h
。这实际上不会拆分类,但会将方法拆分为不同的文件。
服务类 - 您可以使用一项功能并创建一个新类,例如MyUpdater
。这可以扩展NSObject
但是可以扩展任何其他类。如果需要,即使是服务也可以拥有共同的祖先。
我不完全确定从“下载更新”中拆分“检查更新”是否合理。两种行动都必须有一些共同的功能。
在这种情况下,我相信第三种选择是最好的,但不要让控制器看到3个不同的类。理想情况下,控制器应将更新视为一个具有3种方法的类 - 一种用于检查更新,一种用于下载更新,一种用于处理它们。您可以再次将updater类的实现拆分为更多类,但控制器应该看到一个简单的接口。