Iphone 在Cocoa Touch中处理UI与行为问题的子类化替代方案

Iphone 在Cocoa Touch中处理UI与行为问题的子类化替代方案,iphone,objective-c,ios,cocoa,design-patterns,Iphone,Objective C,Ios,Cocoa,Design Patterns,我一直在为应用程序重写的几个设计选项绞尽脑汁,但似乎无法开始,因为我无法想出一个我喜欢的设计。我的大部分顾虑都源于子类化问题。基本上,我有一些方面希望在多个类中重用: 用户界面“外观和感觉” 用户界面行为(对话框、活动指示器、导航) 网络接口(如Three20的ModelViewController,类似于加载,更多,等等) 状态驱动的行为(可达性、登录状态、通知等的更改) 由于Obj-C不支持多重继承,我无法执行类似于MyViewController:StandardUILookNFeel

我一直在为应用程序重写的几个设计选项绞尽脑汁,但似乎无法开始,因为我无法想出一个我喜欢的设计。我的大部分顾虑都源于子类化问题。基本上,我有一些方面希望在多个类中重用:

  • 用户界面“外观和感觉”
  • 用户界面行为(对话框、活动指示器、导航)
  • 网络接口(如Three20的
    ModelViewController
    ,类似于
    加载
    更多
    ,等等)
  • 状态驱动的行为(可达性、登录状态、通知等的更改)
由于Obj-C不支持多重继承,我无法执行类似于MyViewController:StandardUILookNFeelViewController、NetworkEnabledViewController的操作。我知道我可以像使用Java中的接口一样使用协议,但我不知道我是应该将外观、网络行为、状态驱动行为子类化,还是尝试将它们全部放在一个类中


根据您的经验,您是否使用
BaseViewController
来处理外观和感觉,您是否使用它来处理网络内容,您是否使用它来处理行为?你把所有这些都放在一节课上吗?您是否有像three20这样的大型类层次结构,或者我缺少的是更聪明的解决方案吗?

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

这对于可读性、可维护性和可测试性非常重要。如果你想重复使用,这是必不可少的

我建议阅读以下内容:

  • (不是Three20类,而是设计原则)