【问题标题】:iPhone and iPad Development - Good design architecture for maximum reusabilityiPhone 和 iPad 开发 - 良好的设计架构可实现最大的可重用性
【发布时间】:2011-05-30 17:19:40
【问题描述】:

我有三个与 iPhone 和 iPad 开发相关的问题。我正在为 iPhone 编写一个应用程序,该应用程序将来也应该可用于 iPad。通过使用 MVC 模式,我知道我会保留我的模型,但是我不清楚是否需要丢弃控制器和/或视图。所以,我的问题是:

1) 对于为两个平台开发相同应用程序的人,最佳做法是什么?哪些部分通常是可重复使用的,哪些部分通常会被丢弃,以便以最少的工作量和正确的设计开发这两个应用程序?

2) 此外,我还需要在应用程序中包含状态/全局信息。您如何在 iPhone/iPad 应用程序中处理(设计方面的)“状态”信息?我目前有需要在整个应用程序中使用的用户信息(用户名和密码),以便发出多个服务器请求(编码在 http 标头中)。为了实现这一点,我将用户模型存储在 AppDelegate 类中。这在设计方面可以吗,还是应该以不同的方式完成?

3) 最后,我将模型分为抽象类(或处理通用内容的类)和专门处理不同任务的子类。这个想法是编写尽可能少的代码以避免代码重复(例如:发送请求是通用的,解析响应取决于手头的任务)。性能方面,将代码分离到几个类中并具有模型继承是否有问题?

提前致谢!

【问题讨论】:

    标签: iphone objective-c ipad model-view-controller design-patterns


    【解决方案1】:

    1) 设计良好的模型、视图和控制器应该大部分可以在 iOS 设备上重复使用。平台之间 UI 设计的差异程度将在很大程度上决定视图控制器的可重用性。例如,在 iPad 上运行时,视图控制器可能会以拆分视图或弹出窗口的形式呈现,而不是全屏,并且从条形按钮项呈现的操作表可能不会有取消按钮。

    2) 不要在应用程序委托中存储状态。相反,将其存储在模型类中。尤其是用户名和密码应存储在钥匙串中。

    3) 过于复杂的类层次结构会降低灵活性并使理解事物的工作方式变得更加困难,但不必担心与类层次结构复杂性相关的性能。相反,衡量绩效并花时间优化您将以最少的努力获得最大回报的地方。这不太可能是超类方法实现查找。

    【讨论】:

    • 感谢您的回复。这回答了我的问题。我只是有几个cmets:1)iPhone版本和iPad版本之间会有差异。 iPad 版本很可能比 iPhone 应用程序具有更多功能。我所做的是将控制器保留为简单的粘合类,并在模型中包含整个逻辑。我在控制器中有太多与模型相关的信息,因为我担心我必须为 iPad 版本重新编写控制器,所以我就这样做了。希望以后不会后悔……
    • 2) 感谢您的提示。老实说,我忘记了钥匙串 API!
    • 3) 我尝试创建一些模型层次结构的原因是因为我想构建一个易于理解的应用程序,并且因为我发现了不同类之间的共同操作。我担心它会产生性能开销,但正如您所说,这可能不会影响性能。找到 iOS 模型和面向对象的良好示例并不常见,因为我在 Web 上看到的大多数应用程序都使用控制器来存储模型信息。 (不得不将我的评论分成 3 份......对此感到抱歉)
    猜你喜欢
    • 2012-03-09
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多