ayo*_*age 8 iphone model-view-controller mvp
我是在不同的框架上使用MVC模式一段时间,例如(swing,android,gwt ...)现在,我正在学习iPhone框架,我对MVC实现感到非常惊讶.我问的问题是关于视图和控制器的交互.
首先,这就是我构思MVC模式的方式:
视图和控制器通过接口相互通信(一个用于视图,另一个用于控制器)
在我对MVC模式的概念中,控制器不必知道视图的属性.(例如,控制器不能具有视图的标签属性实例,但可以通过视图接口的方法请求视图更改此标签的值)
不让控制器直接在视图UI元素上工作的优点是耦合度低,因此可以更容易地测试视图.可以在隔离(或使用模拟控制器)上启动和测试视图.
关键是,在iPhone上,控制器(例如ViewController)直接知道UI元素,因此我不理解.我的目标不是批评我刚刚学习的框架.但如果这真的像我描述的那样工作,我发现它并不干净......
有没有人对这个框架进行更多实验,谁可以给我详细说明?或者,如果您对我的MVC方法有不同意见,请告诉我;)
更重要的是,我问我的方法是不是MVP(在此描述:http://code.google.com/intl/fr/webtoolkit/articles/testing_methodologies_using_gwt.html)而不是MVC.
Rob*_*ier 12
自从它首次在Smalltalk中正式化以来,MVC意味着不同的东西,并且MVC的NeXTSTEP(Cocoa)版本与Smalltalk不完全匹配.Smalltalk的分解基本上是这样的:
NeXTSTEP的分解在实践中更像是这样的:
我在绘图和呈现之间进行区分,因为NSView对于数据的"含义"往往是愚蠢的.它只关注绘制像素.所以你倾向于传递它的实际字符串而不是视图撕裂并"呈现"的对象.
这并不是一个巨大的差异,但它是你遇到的事情的原因.IMO的主要转变是,通过Cocoa/NeXTSTEP,视图类变得越来越可重用.在变得如此可重复使用时,更多应用敏感部分需要移出控制器.我相信这通常是一个好处,因为它导致更少的子类,更易理解的代码和更多可重用的代码......大多数时候.特别是,它允许您更轻松地交换进行更高级绘图的视图(以特定方式设置动画或在行等上交替颜色的视图),而不会碰到通常存在于控制器中的任何特定于应用程序的逻辑.
也就是说,当一个视图特别复杂时,我发现创建更专业的视图有利于获取数据对象并管理自己的演示文稿,更多的是我认为你想象的方式.
编辑:另外需要注意的事项.Apple的示例代码在设计方面通常很糟糕.它们几乎从不包含模型类,并且几乎可以将所有可以想象的东西塞进ViewControllers中,更糟糕的是:AppController(在我看来应该是一个非常简单的对象).这通常是因为他们的示例代码试图展示某些特定点,并且他们不希望包含破坏事物的复杂性(或者作者是懒惰的;请选择).因此,虽然我确实认为智能视图控制器通常运行良好,但您不应将示例代码作为示例.不幸的是,由于大多数Cocoa应用程序都是封闭源代码,因此没有很多典型的应用程序级别Cocoa设计实例.Adium就是一个很好的例子.它是一个大型,精心设计的多开发人员Cocoa应用程序的绝佳示例.
| 归档时间: |
|
| 查看次数: |
620 次 |
| 最近记录: |