And*_*row 27 .net f# domain-driven-design
我在使用C#编写域驱动的应用程序方面有很多经验.我写的应用程序越多,我发现我想采用一种与标准C#/ OO技术不相符的方法:
所以我一直在研究F#等函数式语言.毕竟没有理由为什么领域驱动设计有使用OO实现.
我想知道是否有人在使用功能语言时对域驱动设计设计有任何想法/经验.特别:
Tom*_*cek 15
免责声明:我对域驱动设计只有一个模糊的知识,所以答案可能不会使用正确的术语,可能过于专注于代码而不是一般概念,但这里有一些想法...
对于理解领域而不是设计特定功能或对象来实现它们的关注似乎是人们如何使用函数式编程语言的一般方法.通常(至少在功能应用程序的一部分中),您首先要设计描述(或模型化)您正在使用的世界的数据结构.数据结构与实现分离,因此它很好地模拟了域.
关于撰写金融合约的论文中描述了一个非常好的例子.该示例是金融合同的估价(和其他处理)申请.最重要的是创建合同模型 - 它们实际上是什么?为了回答这个问题,作者设计了一个描述合同的数据结构.就像是:
type Contract = 
  | Zero                         // No trades
  | Single of string * float     // Single trade (buy something for some price)
  | And of Contract * Contract   // Combine two contracts 
  | Until of Contract * DateTime // Contract that can be executed only until...
  // (...)
还有一些其他情况,但数据结构非常简单,并且模拟了金融行业中使用的各种非常复杂的合同.
总结我认为关注用于模拟世界的数据结构(并且与使用它们的实现分开)非常接近DDD的关键概念.