【问题标题】:Object oriented Design vs. Domain driven Design面向对象设计与领域驱动设计
【发布时间】:2012-10-26 10:15:17
【问题描述】:

面向对象的设计自 20 年以来就广为人知。 Domain specific languages 和领域驱动设计已经在 Ruby 或 Python 等动态语言中流行起来。如果您的域主要由对象组成,例如授予徽章或成就的子系统(如 Stackoverflow 上的徽章),那么可以同时使用面向对象的设计和域驱动的设计,因为徽章肯定是一个对象。例如对于 Ruby,有两个 gem 来实现这个功能,BadgeablePaths of Glory。 Badgeable 使用 DSL,Paths of Glory 是基于面向对象的设计。在哪些情况下使用面向对象的分析和设计建模更好,在哪些情况下最好使用领域特定语言建模(即领域驱动设计)?

【问题讨论】:

  • 特定领域的语言(和面向语言的编程)比 DDD 更广泛。而且它比 OOP(这只是可能的领域模型之一)更加强大和灵活。因此,始终使用基于 DSL 的方法是有意义的。当对象有用时(在实践中这种情况很少见),您的域分析将选择它们作为基础表示。

标签: dsl object-oriented-analysis


【解决方案1】:

OOD 和 DDD 不是可以互换的东西。

DDD 经常会涉及使用 OOD。

来自Wikipedia 页面:

领域驱动设计不是一种技术或方法。 DDD 为设计提供实践结构和术语 专注于和加速处理软件项目的决策 复杂的域。

特别是阅读Relationship to other ideas 部分。

【讨论】:

  • 嗯,您可能是对的,但从实用的角度来看,如果您可以同时使用这两种方法,您最好从对象开始还是从 DSL 开始呢?是否有任何经验法则可以帮助谦虚的程序员做出正确的决定(例如,如果对象之间的连接最重要,那么使用 DSL 很有用,例如在路由中)
猜你喜欢
  • 2011-05-26
  • 2011-10-06
  • 2015-01-06
  • 2015-02-27
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
相关资源
最近更新 更多