DCI - 数据、上下文和交互 - MVC 的继承者?

2024-06-18

最好的描述是什么数据、上下文和交互 (DCI) http://www.gertrudandcope.com-a.googlepages.com/thedciarchitecture将其推销给组织?

它的创建者是特里格夫·雷恩斯考格 http://folk.uio.no/trygver/,的创造者MVC模式 http://en.wikipedia.org/wiki/Model-view-controller.

它真的是 MVC 的继承者还是只是另一种模式?它的优点和缺点是什么?


Trygve 做了 DCI 的演示https://vimeo.com/8235394 https://vimeo.com/8235394

DCI 的创建是为了解决面向对象中的一个问题:审查 OO 代码太困难了。

面向对象中一个用例的代码通常分布在许多类中。要理解代码的工作原理,您还必须了解运行时对象之间的关系。这些关系不是在代码中设置的,它们取决于具体情况。

DCI 的建议是将给定用例的代码从类中分离出来,并放入称为上下文的不同工件中。不同类的对象可以在此上下文中建立关系并参与具有不同角色的交互。

DCI 的全部意义在于使 OO 代码更具可读性!

这就是我的推销方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DCI - 数据、上下文和交互 - MVC 的继承者? 的相关文章

  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • PHP:我是否将事件驱动编程与信号感知接口(信号和槽/观察者模式)混淆了?

    我看到很多人说 Symfony2 Zend Framework 2 等都是事件驱动的 在桌面世界中 通过事件驱动编程 我了解到应用程序每当其状态发生变化时都会通知其观察者 由于 PHP 应用程序是无状态的 因此无法执行此类操作 IE 让观察
  • 在事件聚合器中混合枚举与事件类

    我最近尝试实现自己的简单事件聚合器 我从 MSDN 上的事件聚合器文章中获得了很多灵感 关于 MSDN 上的事件聚合器 我注意到一件事是事件实际上是它们自己的类 这根本不是一件坏事 然而 我只是觉得总是为每个小事件创建一个新的空类很尴尬 我
  • 池和集群之间的区别

    从最纯粹的角度来看 它们感觉像是相同的概念 两者都管理资源 节点集并控制来自外部组件或由外部组件进行的访问 通过池 您可以向池借用这些资源 节点 也可以从池中归还这些资源 节点 对于集群 您在资源 节点前面有一个负载均衡器 并且您可以向负载
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 这个单例能够抵抗序列化和反射攻击吗?

    以下代码是否能够抵抗序列化和反射攻击 public class Example private static Example instance new Example private Example public static Exampl
  • F#:模式构成?

    我正在尝试编写一个由另外两个模式组成的模式 但我不确定如何去做 我的输入是字符串列表 文档 我有一个与文档标题匹配的模式和一个与文档正文匹配的模式 该模式应该匹配整个文档并返回标题和正文模式的结果 您可以使用以下命令一起运行两个模式 您在问
  • 为什么以及如何避免事件处理程序内存泄漏?

    通过阅读 StackOverflow 上的一些问题和答案 我刚刚意识到 使用以下命令添加事件处理程序 在 C 或者我猜 其他 net 语言 中可能会导致常见的内存泄漏 我过去多次使用过这样的事件处理程序 但从未意识到它们可能会导致或已经导致
  • 如何将只缓存某些内容的字段添加到ADT?

    我经常需要向 ADT 添加字段 仅记住一些冗余信息 但我还没有完全弄清楚如何又好又高效地做到这一点 说明问题的最好方法是举个例子 假设我们正在使用无类型 lambda 项 type VSym String data Lambda Var V
  • 使用超类创建构建器时,父类无法返回子类的实例[重复]

    这个问题在这里已经有答案了 如果我使用构建器模式来配置新对象 我可能有两个类 例如Game and HockeyGame 如下所示 当我想创建一个新的HockeyGame 我得到它的构建器并开始调用方法来根据需要配置对象 我遇到的问题显示在
  • 带双重检查锁的单例设计模式

    假设您有以下代码 1 为什么我们使用双重检查锁 为什么单锁不够好 请提供详细的例子 2 这种实施方式的主要缺点是什么 我该如何证明呢 Thanks public sealed class SomeSingleton5 private sta
  • 访客模式如何不违反开放/封闭原则?

    来自维基百科 这个想法是 一旦完成 类的实现只能修改为 纠正错误 新的或更改的功能将需要创建不同的类 该类可以通过继承重用原始类的代码 据我了解 访问者模式是一种强大的技术 可以通过使用双重分派来遍历实现相同接口的相似但不同的对象 在我的一
  • 用于将 cython 中的许多 C++ 类包装到单个共享对象的项目结构

    我在文档 邮件列表和这个问题在这里 https stackoverflow com questions 10300660 cython and distutils 但我想得到一个更直接的答案来解决我的具体情况 我正在通过尝试一点一点地包装我
  • DI Control-Freak 反模式:难以理解

    我正在阅读 Mark Seemann 写的 NET 中的依赖注入 但我无论如何也无法理解这一点 虽然new当涉及到 VOLATILE 时 关键字是一种代码味道 依赖性 您无需担心将其用于稳定 依赖性 这new一般来说 关键字不会突然变得 非
  • 当在 Repository/UnitOrWork 之上使用 Service 类时,我应该在哪里放置逻辑不适合 Repository 的常用数据访问代码?

    In my 先前的问题 https stackoverflow com questions 24906548 using the generic repository unit of work pattern in large projec
  • Java中的对象池模式

    所以我实现了自己的对象池模式 它工作得很好并且符合预期 从列表中返回我的 老师 对象 并在没有对象时创建它们 我的问题 返回的对象 Teacher 然后需要被转换为它的专门子类之一 例如 生物老师 获得这种功能的最佳方法是什么 编辑 抱歉
  • 在 PHP 应用程序中实现插件的设计模式

    对于如何在 PHP 应用程序中实现插件有共识吗 我已经调查过观察者模式 http devzone zend com 1732 implementing the observer pattern with splobserver and sp
  • StockTrader RI > 控制器、演示者,WTF?

    我目前正在学习如何通过 Prism 复合 WPF 项目高级使用 WPF 我观看了很多视频和示例 演示应用程序 StockTraderRI 让我提出了这个问题 以下各部分的具体作用是什么 SomethingService 好的 这是管理数据的
  • 工厂模式数据库连接

    我正在尝试使用 MySQL 实现数据库连接上的工厂模式 SQL Server 面临奇怪的错误 你调用的对象是空的 在 SQL 命令对象上 internal class SqlServerDB IDatabase private SqlCon
  • MySQL 中如何使用继承?

    所以我正在读一本关于数据库设计原理的书 并读到了有关继承的章节 但我对如何在 MySQL 中将子类与其超类 连接 感到困惑 The table structure would for example look like this 那么我如何

随机推荐

  • HubSection 中的 DataTemplate 未获得完整高度

    我有以下代码
  • Javascript代码可以在jsfiddle中运行,但不能在浏览器中运行[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我尝试搜索类似的问题 但无法找到我的代码在 jfiddle 中工作但在浏览器中不起作用的原因 我还尝试将我的代码从 jfiddle
  • 如何在 Bazel 中禁用 C/C++ `-Werror` 构建错误? (又名:如何关闭已由“-Wall -Werror”打开的特定警告)

    我在构建时遇到以下错误 has undefined behavior Werror Wundefined reinterpret cast Bazel 构建从此完全停止clang llvm编译器 Wundefined reinterpret
  • jQuery UI:如何更改进度条的颜色?

    我设置了一个简单的 jQueryUI 进度条 div div 现在 我想根据条形的值对其进行着色 例如 50 绿色 我该怎么做呢 注 有类似的问题 https stackoverflow com questions 1247660 how
  • 谷歌字体包是否会下载设备上的字体?

    在我的 flutter Android 应用程序中 第一次启动时 该应用程序显示默认字体 一秒钟后它更改为我从 google fonts flutter 包中使用的字体 我想我的问题是 应用程序第一次启动时是否会立即下载字体 如果是 可以使
  • 2 个数组/图像相乘的多线程性能 - 英特尔 IPP

    我正在使用英特尔 IPP 来进行 2 个图像 数组 的乘法 我使用的是 Intel Composer 2015 Update 6 附带的 Intel IPP 8 2 我创建了一个简单的函数来乘以太大的图像 整个项目已附后 见下文 我想看看使
  • Firefox 后退按钮与 iframe

    在 Firefox 中 如果 iframe 的 window location 发生更改 则会将其填充到顶级窗口的历史记录中 如果用户现在单击浏览器后退按钮 iframe 的内容将发生变化 而不是浏览器返回到之前的 HTML 页面 这对于某
  • 一行总结详细信息? [复制]

    这个问题在这里已经有答案了 我希望页脚内的详细信息成行显示 现在每个详细信息都显示在新行上 我怎样才能让它与 CSS 一起工作
  • 空的 HTML5 页面仍然会溢出并在移动设备上触发滚动条

    我期望的是一个不会溢出的页面 因为没有内容 因此不需要滚动 但我得到的是一个空页面 但它仍然滚动 而不仅仅是触摸事件上出现的滚动条的美观问题 它实际上偏移了视口中的背景 我一直在尝试谷歌向我提供的一切 以确保主体块的宽度和高度等于视口的大小
  • 如何将 IronPython 与 Visual Studio 2008 结合使用

    我尝试过使用 Microsoft 提供的 IronPython 集成扩展 但它不适用于 Visual Studio 2008 是否有适用于 IronPython 的合适 VS 2008 IDE 扩展 对于 IronPython 1 1 支持
  • 在 SQL 中将数字求小数次幂

    我试图在 MS SQL 中将一系列数字求小数 1 5 次幂 但在应用于负基数时出现 域错误 这应该不是问题 因为我要提升到奇次幂根 此外 我可以在 Excel 中进行计算 谁能评论一下 MS SQL 是否根本不支持将负幂提高到小数根 负基数
  • 我可以在 macOS 上使用 win32com 客户端吗?

    我一直在研究 Pycel 和 Xlrd 库 在 Mac 上使用它们的问题是这两个库都使用 win32com client 读取 Excel 文件 所以我想知道 有什么办法我可以使用win32commacOS 的客户端 如果没有 我可以使用类
  • 如何查看 org.codehaus.jackson 日志消息 - 使用logging.properties

    我正在尝试反序列化传入的PUT使用 JSON 请求正文进行请求org codehaus jackson包裹 我收到错误消息The request sent by the client was syntactically incorrect
  • 显示特定颜色

    我正在研究颜色分类 我正在用特定颜色初始化一个矩阵 以便可以获得红色 蓝色或绿色的 16x16 矩阵 代码如下 library rgl color1 lt function n lt 3 m lt 16 a lt list numeric
  • ruby 2.0.0p247 的分段错误导致 Rails 服务器崩溃

    在 OS X Mavericks 1 9 上运行 Rails 4 0 Ruby 2 0 0p247 我今天遇到了一个我从未遇到过的错误 我不明白 当尝试在我的项目中启动 Rails 服务器时 服务器崩溃了 我确实尝试重新安装并重新编译一次
  • 如何检测在 MapView 中选择了哪个注释

    我在地图内做了一些注释 当我点击它们时 我会看到一些信息 并且有一个打开地图的按钮 并且使用我无法接受的正确信息应该可以绘制出我的路线 这是我的代码 我有 2 个双精度数组用于我的经纬度 我从查询中填充了它们 var lat Double
  • Laravel 5 使用语句[重复]

    这个问题在这里已经有答案了 第一次使用 Laravel 5 我了解命名空间的使用以及为什么需要使用它们 我不明白的是为什么我需要添加如下所示的 use 语句 在控制器的顶部 use Session use Input use Respons
  • 如何使用 Maven 的 Java API 访问 Maven Artifact POM?

    我正在尝试检索整个依赖关系树及其从项目根部开始的 pom 我从文件系统中已经存在的 POM 开始 但我不确定如何从存储库中检索依赖项 pom 我正在使用以下代码来访问依赖项列表 从列表中我获得了有关文物的所有信息 我只是不确定如何访问存储库
  • C 代码中的错误处理

    当涉及到在 C 库中以一致的方式处理错误时 您认为 最佳实践 是什么 我一直在想有两种方法 始终返回错误代码 典型的函数如下所示 MYAPI ERROR getObjectSize MYAPIHandle h int returnedSiz
  • DCI - 数据、上下文和交互 - MVC 的继承者?

    最好的描述是什么数据 上下文和交互 DCI http www gertrudandcope com a googlepages com thedciarchitecture将其推销给组织 它的创建者是特里格夫 雷恩斯考格 http folk