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

时间:2012-09-08 01:59:41

标签: node.js architecture functional-programming lua closures

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

  • 接口/抽象类型
  • 对象组成
  • 依赖倒置

我被要求使用动态的功能语言(Lua)设计一个相当复杂的后端消息处理系统。功能语言如今风靡一时(NodeJs,JavaScript等),所以我很高兴用这个机会来加入这个潮流。

任何人都可以建议我使用示例应用程序或体系结构来学习使用诸如一流函数,闭包,curry等构建复杂,松散耦合系统的东西吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

我建议查看下面的libs / frameworks,它们的设计非常好, 请记住,javascript和lua非常相似,只需替换对象即可 表添加了协同程序和“漂亮”的语法,你有Lua。

的Lua

    Lua的
  • Luvit node.js。

的node.js

答案 1 :(得分:2)

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

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

头等功能==命令模式。由于第一类函数可以像值一样传递,因此您基本上可以免费获得Command模式而无需开销。

<强>参考文献:

First Class Functions == Command pattern

Functional Dependency Injection via Currying