我最近读了一篇文章,说MVC模式描述了应用程序中的层。但我个人认为MVC在应用程序中显示了几个关键角色。
你认为哪个词更好,层或角色,来描述MVC的三个主要部分?
答案 0 :(得分:4)
图层应该意味着各组代码之间的耦合非常窄。 MVC涉及模型,视图和控制器之间相对紧密的耦合。因此,如果将其表征为分层模式,则在定义层之间的API方面会出现问题。要做到这一点,你必须实现一些不直观的模式。
因此,我同意你倾向于将其视为在单个层中定义角色的模式。
答案 1 :(得分:2)
我认为角色是更好的描述。视图和控制器都在同一“层”中,通常模型被描述为层,但在层之间使用。
通常我的应用程序以域模型为中心,包括表示,持久性和文件。考虑一个分层的架构并不适合我。
答案 2 :(得分:1)
MVC明确定义了ROLES。这些是您可以在任意数量的层中实现的3个角色。例如,你可以有一个多层控制器
答案 3 :(得分:1)
角色,而不是图层。层完全依赖于MVC模式的底层实现。例如,服务层可以是一个实现上的单个层,但是它可以在另一个实现上具有web服务远程处理层和数据库层(用于两个不同的服务层)。层的概念只是为了帮助您组织它,就像模式一样,但是图层不像图案那样容易发现,图层可以更改,而图层保持不变,尽管图层因实现的不同而发生变化。
答案 4 :(得分:0)
你无法比较这两个词,因为它们描述了不同的概念。
对我来说,一个层是不透明的,提供了一些我可以用来做事的功能。例如,无线发射器的良好硬件层只会给我一个发送和接收功能(例如,基于字节),隐藏所有丑陋,丑陋的细节。
角色是对象的行为方式。例如,我的一个编译器中的转换将采用抽象的syntaxtree并返回一个抽象的syntaxtree或我当前项目中的一个感情将采取状态差异并返回一个特定改变的状态差异。
然而,考虑到这两个定义,我认为没有必要选择一个“正确”的术语并将另一个定义为错误,因为它们并没有太大冲突。层的一部分具有特定角色,并且符合特定角色的一组对象形成层。当然,控制器在UI和模型之间形成一个特定的层(至少对于输入),但是,它也有一个角色 - 它将某个事件转变为某些其他事件(因此,它是某种适配器)。 / p>
答案 5 :(得分:0)
我认为其中任何一个都可以合理地争论,但我认为将这些部分描述为“层”与其他约定更为一致,例如OSI model。由于View,Controller和Model逐渐接近您的数据,因此它更像是一个分层结构。似乎“角色”将适用于同一层上应用程序的不同部分。
答案 6 :(得分:-1)
为什么不两个?我认为它是3个独立的层,实现3个不同的角色。
答案 7 :(得分:-1)
这是所有术语,但我认为正确的软件架构术语将是“层”,就像在逻辑层中一样。如果它更清楚,你可以使用术语“建筑层”。
问题是,它只是切片应用程序的另一种方式:经典的n层应用程序将是:
您可以在简单的MVC应用程序中使用以下逻辑层:
但是您仍然可以将“UI”和“Controller”一起形成用户界面层 - 但在描述和绘制这些体系结构时,我通常会将Controller拆分为单独的层。