替代子类化以处理Cocoa Touch中的UI与行为问题

时间:2012-06-08 02:32:41

标签: iphone objective-c ios cocoa design-patterns

我一直在努力解决应用程序重写的几个设计选项,似乎无法继续,因为我无法想出一个我喜欢的设计。我的大多数问题源于子类化问题。基本上,我有一些方面需要在多个类中重用:

  • 用户界面“外观”
  • 用户界面行为(对话框,活动指示器,导航)
  • 网络界面(例如Three20的ModelViewController,类似loadmore等等
  • 国家驱动的行为(可达性,登录状态,通知等的变化)

由于Obj-C不支持多重继承,因此无法执行MyViewController : StandardUILookNFeelViewController, NetworkEnabledViewController之类的操作。我知道我可以像在Java中使用接口一样使用协议,但我不知道我是否应该将外观,网络行为,状态驱动的行为子类化,或者尝试将其全部放在一个类。

根据您的经验,您是否使用BaseViewController来处理外观和感觉,是否使用它来处理网络内容,是否使用它来处理行为?你把所有这些都扔进了一堂课吗?你有一个像three20这样的大类层次结构,还是有一个我想念的更聪明的解决方案?

1 个答案:

答案 0 :(得分:0)

人们倾向于将功能集中到视图控制器中,因为“它很方便”。但是,根据定义,处理多重责任的单个类违反了单一责任原则。

这对可读性,可维护性和可测试性非常重要。如果你想重用,那就很重要了。

我建议您阅读: