Node.js 用动态/脚本语言构建松散耦合系统的设计模式

Node.js 用动态/脚本语言构建松散耦合系统的设计模式,node.js,architecture,functional-programming,lua,closures,Node.js,Architecture,Functional Programming,Lua,Closures,我有很多使用Java/C构建企业应用程序的经验,并且已经习惯了面向对象、静态类型语言的所有特性。具体而言,我已经非常擅长使用行业标准工具处理系统复杂性: 接口/抽象类型 对象组合 依赖倒置 我被要求使用动态函数式语言(Lua)设计一个相当复杂的后端消息处理系统。函数式语言现在风靡一时(NodeJs、JavaScript等),所以我很高兴借此机会加入到这股潮流中来 有人能推荐一个示例应用程序或体系结构吗?我可以用它来学习如何使用第一类函数、闭包、curry来构建一个复杂的、松散耦合的系统 非常

我有很多使用Java/C构建企业应用程序的经验,并且已经习惯了面向对象、静态类型语言的所有特性。具体而言,我已经非常擅长使用行业标准工具处理系统复杂性:

  • 接口/抽象类型
  • 对象组合
  • 依赖倒置
我被要求使用动态函数式语言(Lua)设计一个相当复杂的后端消息处理系统。函数式语言现在风靡一时(NodeJs、JavaScript等),所以我很高兴借此机会加入到这股潮流中来

有人能推荐一个示例应用程序或体系结构吗?我可以用它来学习如何使用第一类函数、闭包、curry来构建一个复杂的、松散耦合的系统


非常感谢

我建议查看下面的libs/框架,它们设计得非常好, 请记住,javascript和lua非常相似,只需将对象替换为 表添加了协程和“nice”语法,您就有了Lua

卢阿
  • Lua中的node.js
node.js
  • 微网框架
  • 单元测试框架

我建议查看下面的libs/框架,它们设计得非常好, 请记住,javascript和lua非常相似,只需将对象替换为 表添加了协程和“nice”语法,您就有了Lua

卢阿
  • Lua中的node.js
node.js
  • 微网框架
  • 单元测试框架

我对“设计模式”做了大量研究,这些模式可以应用于具有一流功能支持的动态语言中,以下是我的发现

Currying==依赖项注入。Currying允许您接受一个函数并将其重新打包为一个新函数,其中一个或多个参数值已分配。这非常类似于一个IoC容器实例化一个具有所有依赖项的“自举”类,并准备供客户端使用

第一类函数==命令模式。由于第一类函数可以像值一样传递,因此基本上可以免费获得命令模式,而不需要额外的开销

参考文献:


我对“设计模式”做了大量研究,这些模式可以应用于具有一流功能支持的动态语言中,以下是我的发现

Currying==依赖项注入。Currying允许您接受一个函数并将其重新打包为一个新函数,其中一个或多个参数值已分配。这非常类似于一个IoC容器实例化一个具有所有依赖项的“自举”类,并准备供客户端使用

第一类函数==命令模式。由于第一类函数可以像值一样传递,因此基本上可以免费获得命令模式,而不需要额外的开销

参考文献:


Lua不是函数式语言。它有函数式编程的元素,但仅仅将函数作为一级对象并不意味着它是一种函数式编程语言。@Nicolas,如果是这样的话,你会说Scheme也不是函数式语言吗?@finnw:我对Scheme不太了解。但我知道函数式编程是什么,我知道Lua不是。仅仅因为一种语言有闭包并不能使它起作用。包括不可变状态等等,Lua在这方面非常糟糕。在Lua中编写纯函数是非常困难的,函数编程不应该使编写纯函数变得困难。@Nicolas,我看到之前已经讨论过这一点,例如。我猜Scheme是“祖传的”,因为它出现时被认为是一种函数语言,但它不符合现在使用的更严格的定义(与Haskell、Clojure等一起长大的人使用)。finnw Scheme允许编写纯函数,避免可变状态等。然而,它不需要它,Lua并不是一种函数式语言。它有函数式编程的元素,但仅仅将函数作为一级对象并不意味着它是一种函数式编程语言。@Nicolas,如果是这样的话,你会说Scheme也不是函数式语言吗?@finnw:我对Scheme不太了解。但我知道函数式编程是什么,我知道Lua不是。仅仅因为一种语言有闭包并不能使它起作用。包括不可变状态等等,Lua在这方面非常糟糕。在Lua中编写纯函数是非常困难的,函数编程不应该使编写纯函数变得困难。@Nicolas,我看到之前已经讨论过这一点,例如。我猜Scheme是“祖传的”,因为它出现时被认为是一种函数语言,但它不符合现在使用的更严格的定义(与Haskell、Clojure等一起长大的人使用)。finnw Scheme允许编写纯函数,避免可变状态等。然而,它不需要它,而且它并没有真正使用任何花哨的东西来隔离IO。