ios - 海量父子模式和委托(delegate)模式

标签 ios objective-c design-patterns composite delegation

我面临着一个复杂的设计问题。由于硬设计的图形,我无法将 Apple 导航模式用作 UINavigationController或其他的。
这是应用图
App diagram

黑色箭头:协议(protocol)方向
蓝色箭头:父子模式方向

我创建了这个流程是因为我想在单个 ViewController 中维护代码。清晰和孤立:我认为它们是 模块 它们可以在其他应用程序的某个地方使用。RootViewControllerMainVCs职位经理。它决定哪个是当前必须显示的 View Controller ,并根据其状态(由委托(delegate)方法修改)对其进行配置。
MainVC不知道RootVC存在,它使用协议(protocol)调用 Root。单ChildViewController不知道它的MainVC存在,它使用协议(protocol)等调用 Main。

代码清晰易懂,这是我的目的,但是当我必须从 RootVC 对骨架( ChildViewControllerN )进行修改时,无数的 child ChildViewController ,无数的 child MainViewController ,我必须传播协议(protocol)直到 RootViewController .

我的第一个问题是 : 这个模式对吗?你怎么看待这件事?

我的第二个问题是 : 是否有一个限制点,我没有使用委托(delegate)模式,但类似于 KVO ?

添加
我读了一篇关于 composite pattern 的大学讲座。它说:

A composite object knows its contained components, that is, its children. Should components maintain a reference to their parent component? Depends on application, but having these references supports the Chain of Responsibility pattern



因此,根据链,我可以维护父级的引用,但我必须为这种引用声明一个自定义接口(interface)。但是,这样做我会减少协议(protocol)的数量,但 第二个问题仍未解答

最佳答案

观点:

当我超越单一级别的父/子关系时,我倾向于停止使用委托(delegate)并转向 NSNotification .我经常去直接NSNotification减少依赖。我更喜欢 KVO,因为它是显式的,而随着项目的进展,KVO 更难调试。

(例如:如果在分配时刻和 KVO 交付之间在主线程上释放了监听器,那么后台线程上看似简单的变量分配会导致难以诊断的崩溃。)

关于ios - 海量父子模式和委托(delegate)模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31069875/

相关文章:

java - PhoneGap : Remote Logging with gwt-log

ios - Xcode Storyboard : Internal error. 请提交错误

ios - 循环播放 AVPlayer 视频流并刷新每次循环的比特率

java - JAXB 与构建器模式一起。那可能吗?

.net - 封装 Linq to SQL 数据访问的最佳方法是什么?

design-patterns - Go:如何使用中间件模式?

ios - 没有可用于签署 Xcode 5 的身份

ios - Xcode 生成 NSManagedObject 子类问题

ios - 处理 Apple 推送通知服务

ios - Mac 和 iOS 之间的 NSData 结构