我被告知Java不是遵循MVC架构的最佳选择.我相信我已经看到了一些Java框架解决方案来缓解这个问题.但是,我有点困惑为什么会这样.更具体地说,为什么Java对MVC的尝试经常被嘲笑为"想要"的方法.我来自ObjC背景(当然还有Cocoa),并且很想听听经验丰富的程序员关于为什么MVC与Java据说不足之处.
欣赏它!
你说你来自Cocoa背景,所以我假设你不是在讨论web-framework MVC.大多数表示他们做MVC的webframeworks实际上使用了一种名为Front Controller的不同模式,它与普通的MVC有点不同,因为你需要相当多的管道来实现这一点.因此,Web世界中的所有MVC框架,最初是MVC,是基于窗口的应用程序的模式.对于这些应用程序,您可以在不需要框架的情况下使MVC工作.
MVC是一种可以在任何面向对象语言中实现的模式.你没理由不能用Java做到这一点.我能想到为什么人们会把Java上的MVC称为"想要"的方法的唯一原因是像Swing这样的Java上的UI库实际上并不需要你做MVC.他们只是为您提供实现View的工具.您必须自己创建控制器和模型类.
关于"真正的MVC"的讨论通常不具有建设性.MVC是大约30年前为smaltalk开发的模式.现在使用的任何实现都不再完全相同,许多实现都是改进.你有不同的风格叫MVP,MVVM,Document-View等.在某些情况下它们都很有用.除此之外,重要的是将UI逻辑与应用程序逻辑分开是一个好主意.Java可以做到这一点,大多数其他语言也是如此.声称不这样做的人可能只是害怕看到他们所熟悉的语言之外.
从根本上说,MVC是一种编程模型.我认为它是平台和语言无关的.我曾经遵循C++中的MVC原则,因此我不确定为什么任何语言都会被视为遵循这些原则的"不足之处".不可否认,我现在是.NET用户,但我认为只需付出一点努力就可以应用于Java.有关一些想法,请参阅Java Model-View Controller.
很想听听经验丰富的程序员关于为什么MVC与Java据说不足之处.
它没有.在几乎任何语言中实现MVC绝对没有错.这是一种模式,而不是语言功能.此外,我从来没有听过有人说"Java中的MVC不合适" - 我的猜测是,引用是脱离了上下文,或者发表声明的人对Java几乎没有经验或想要其他东西.
你不具备使用MVC相关的类可可只是写一个Cocoa应用程序.很高兴他们在那里,并且在工具(如Interface Builder)中有各种各样的支持来使用它们,并且可能很少有你不会使用它们的情况,但是目标没有任何根本-C语言使得MVC实现比用Java编码的MVC实现"更好".此外,就像Cocoa框架通过各种Controller和View类为MVC提供各种强大的支持一样,Java有很多优秀的框架可以为实现MVC提供支持.