【发布时间】:2012-10-26 10:15:17
【问题描述】:
面向对象的设计自 20 年以来就广为人知。 Domain specific languages 和领域驱动设计已经在 Ruby 或 Python 等动态语言中流行起来。如果您的域主要由对象组成,例如授予徽章或成就的子系统(如 Stackoverflow 上的徽章),那么可以同时使用面向对象的设计和域驱动的设计,因为徽章肯定是一个对象。例如对于 Ruby,有两个 gem 来实现这个功能,Badgeable 和 Paths of Glory。 Badgeable 使用 DSL,Paths of Glory 是基于面向对象的设计。在哪些情况下使用面向对象的分析和设计建模更好,在哪些情况下最好使用领域特定语言建模(即领域驱动设计)?
【问题讨论】:
-
特定领域的语言(和面向语言的编程)比 DDD 更广泛。而且它比 OOP(这只是可能的领域模型之一)更加强大和灵活。因此,始终使用基于 DSL 的方法是有意义的。当对象有用时(在实践中这种情况很少见),您的域分析将选择它们作为基础表示。
标签: dsl object-oriented-analysis