在动态/脚本语言中构建松散耦合系统的设计模式

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

  • 接口/抽象类型
  • 对象组合
  • 依赖反转

我被要求使用动态的功能语言(Lua)设计一个相当复杂的后端消息处理系统。功能语言是当今的热门语言(例如NodeJs、JavaScript等),因此我很高兴利用这个机会跳上这个潮流。

有人能建议一个样本应用程序或架构,我可以使用它来学习使用类函数、闭包、柯里化等来构建一个复杂的、松耦合的系统吗?

非常感谢!

点赞
用户1397390
用户1397390

我建议看看下面的库/框架,它们设计得非常好。请记住JavaScript和Lua非常相似,只需用表替换对象并添加协程和“好看”的语法,就可以得到Lua。

Lua

  • Luvit 一个在Lua中使用node.js的库。

node.js

2012-09-09 01:21:15
用户113330
用户113330

我已经对可以在具有一等函数支持的动态语言中应用的“设计模式”进行了相当多的研究,以下是我的研究结果。

柯里化 == 依赖注入。柯里化允许您将函数重新打包为一个新函数,并将其一个或多个参数值已分配。这非常类似于IoC容器通过“引导”所有依赖项实例化类并准备好供客户端使用。

一等函数 == 命令模式。由于一等函数可以像值一样传递,因此您基本上可以免费使用并且没有额外的开销得到命令模式。

参考资料:

一等函数 == 命令模式

通过Currying进行函数依赖注入

2012-10-23 17:41:05