gpt4 book ai didi

objective-c - MVC 面向对象

转载 作者:行者123 更新时间:2023-12-02 07:46:08 25 4
gpt4 key购买 nike

我有点困惑......简单地说......MVC 是如何完全面向对象的?

我通过使用大量 java 和 c# 了解对象具有状态和行为的 OOP。

我发现我正在分离对象操作,并将它们全部放在我的 Controller 中,而不是将它们放在一个实现中(连同 View 是我最感兴趣的地方,但显然你不能这样做)。

例如,假设我有一个气球对象..它的模型保存它的状态,比如它的颜色、位置、它在屏幕上移动的速度、它移动的方向等等。但是,如果我尝试执行任何操作,例如

-(void)moveBalloon:(CGPoint)destination

这在模型中通常是不被接受的,因为模型只保存关于对象的数据,而 View 只绘制对象而不知道它的位置等。

也许我在以一种奇怪的方式思考这个问题。我通常认为 BalloonView 是一个独立于 BalloonModel 的对象,而 Controller 是它自己的对象。

我的想法在这里完全错误吗?

另外..在可重用性方面,如果我想将此对象提供给其他人在他们的应用程序中使用,我会给他们 BalloonView 和 BalloonModel,但他们无法访问我拥有的任何操作已经作为 Balloon 对象的一部分实现,因为它们在 Controller 中。

最佳答案

MVC 就是将业务逻辑(模型)与用户界面( View 和 Controller )分离。就其本身而言,MVC 与面向对象 (OO) 编程几乎没有关系。您可以轻松编写遵循 MVC 设计策略的软件,而无需遵循 OO 策略。

程序的核心是它的业务逻辑。在您的气球示例中,如果您的程序需要移动气球,那么模型绝对应该有一个 moveBalloon: 方法。换句话说,模型代码应该能够完成您的程序需要做的所有事情。它应该存储程序状态、处理数据以及与软件内部工作相关的任何其他内容。 View 应该是实际的 UI 元素(窗口、按钮、文本字段、图形等)。它们通常应该是“哑”的(即没有内置业务逻辑)。 Controller 应处理 UI 的内部工作。

如果用户希望用鼠标移动气球,那么 Controller 和 View 通常会处理所有的点击、拖动和移动,而 Model 只会处理纯逻辑部分:气球。

关于objective-c - MVC 面向对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6886716/

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