gpt4 book ai didi

ios - 在良好的 OOP 原则中,应该将 nodeView 请求添加到树中,还是应该将 nodeView 添加到树中?

转载 作者:可可西里 更新时间:2023-11-01 04:54:09 26 4
gpt4 key购买 nike

我想知道什么是好的 OOP 原则,如果在 iOS 应用程序中,有一个 UITreeView 和一个 UINodeView,以及 UITreeView 具有 rootNodeView 的对象,并且此根节点分支为 leftChildNodeViewrightChildNodeView

如果每个 UINodeView 对象都可以在屏幕的任何位置“拖放”,这在 UINodeView-touchesMoved 中实现处理程序——这是好的 OOP 原则吗?此外,如果一个新的 nodeView foo 确实靠近没有左或右 child 的节点之一,则节点 foo 可以作为 child 添加到该节点.

而且我想如果另一个 nodeView 是 bar 并且也没有父节点(也就是说,也是悬垂的),那么可以将 foo 添加为 bar 的 child 也是如此。

这个 foo nodeView 应该“请求节点的许可将其添加为左子节点还是右子节点”并“在允许的情况下添加它”,或者 UIViewController 应该或 UITreeView 检测到一个节点正在自身内部移动,并“确定它靠近另一个节点(在屏幕上的所有节点中)并且没有左或右子节点,并添加 foo 作为一个 child "?

显然,如果树中只有一个节点可以添加子节点,那么 UITreeView 就可以完成这项工作,但是如果任何节点(悬空或非悬空)都可以作为父节点,那么 UIViewController 或主视图 UIView 似乎需要完成这项工作。

这样做是否违反良好的 OOP 原则?

最佳答案

我会说 UITreeView 应该处理这个,节点应该通过协议(protocol)/委托(delegate)通信通知他关于位置变化。 TreeView 是唯一可以检查节点的位置变化是否导致与另一个节点发生碰撞等的对象。

如果您想编写真正好的 OOP 代码,请尝试使用“模型- View - Controller ”模式,其中您的 View 是您的 TreeView,您的模型应该包含所有节点数据对象并提供一些碰撞方法节点之间的检测,你的 Controller 应该从你的 View 接收位置变化,与模型对话,决定做什么,然后采取适当的行动(比如将一个节点添加为另一个节点的叶子)。

这样您就可以完全灵活地应对 future 的变化,例如使用数据库而不是 RAM 进行数据存储,或者使用 iPad 代码而不是 iPhone 只需替换 View 即可。

关于ios - 在良好的 OOP 原则中,应该将 nodeView 请求添加到树中,还是应该将 nodeView 添加到树中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12298992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com