模型视图控制器与边界控制实体

Posted

技术标签:

【中文标题】模型视图控制器与边界控制实体【英文标题】:Model View Controller vs Boundary Control Entity 【发布时间】:2015-01-10 17:19:35 【问题描述】:

MVC(Model View Controller)和BCE(Boundary Control Entity)有什么区别,我知道这两种模式很相似,但是有区别,那区别是什么?

【问题讨论】:

【参考方案1】:

BCE 由 Ivar Jacobson(爱立信公司)在 80 年代出版,重点是在面向对象系统中分离元素的职责。 MVC 由 Trygve Reenskaug (XEROX Co.) 在 70 年代发布,重点是实现可选择的用户界面。

【讨论】:

【参考方案2】:

Here is a discussion of ECB by Adam Bien,其中包括 MVC 和 ECB 之间的区别。 Adam 说 ECB 是“美化的 MVC”,ECB 更常用于业务逻辑,而 MVC 更常用于用户界面。

【讨论】:

【参考方案3】:

BCE 是您创建遵循开/关原则、依赖倒置和接口隔离的解耦组件的方式。这是您想要设计应用程序的核心。

BCE 由以下元素的组合组成:边界到其他组件、逻辑控制器和业务实体

每个边界包含两个接口:

一个输入接口,只负责暴露需要被其他组件知道的业务逻辑的方法(接口隔离) 一个输出接口,负责不将业务逻辑耦合到特定组件的实现,而是让逻辑定义合约,其他组件适应它(依赖反转+观察者)

注意:您应该努力使您的边界具有一般性和抽象性(即不要在界面中泄露具体细节)。理想情况下,您应该能够用不同的组件替换外部组件,而不会破坏接口或核心业务逻辑代码。

每个控制器都包含一个用例的逻辑。这是应用程序特定的逻辑所在。

实体代表业务对象,例如发票、客户、报告和其他域对象。它们本质上是数据结构,但包含不特定于特定用例的代码。例如:invoice.addItem()。

控制器将从输入边界接收指令,协调实体以更新应用程序状态,产生一些结果并将其发送到输出边界。

我不知道 MVC,所以我只回答了一半

【讨论】:

【参考方案4】:

MVC 和 BCE 试试这篇论文: https://www.academia.edu/39113245/Synthesis_of_MOF_MDA_PIM_MVC_and_BCE_notions_and_patterns

【讨论】:

以上是关于模型视图控制器与边界控制实体的主要内容,如果未能解决你的问题,请参考以下文章

在哪里放置不是模型、视图、控制器或助手的 Rails 代码?

使用模型更改更新脚手架控制器和视图

模型与视图控制器通信的推荐方式是啥?

Spring Boot 和事务边界

以编程方式将 XIB 视图添加到具有边界的视图控制器 - 不居中

为啥 UIDimmingView 总是覆盖屏幕主要边界?