JavaScript 和 jQuery 设计模式

Essential JavaScript And jQuery Design Patterns – A Free New Book一文陈列了以下设计模式:

Constructor Pattern构造器模式
Module Pattern模块模式
Revealing Module Pattern揭示模块模式
Singleton Pattern单例模式
Observer Pattern观察者模式
Mediator Pattern中介者模式
Prototype Pattern原型模式
Command Pattern命令模式
Facade Pattern总管模式
Factory Pattern工厂模式
Mixin Pattern织入模式
Decorator Pattern装饰器模式
Flyweight Pattern 享元模式

JavaScript MV* Patterns:
MVC Pattern MVC模式
MVP Pattern MVP模式
MVVM Pattern MVVM模式

在JQuery中实现的模式(主要是结构类模式)
Composite Pattern 组合模式
Adapter Pattern 适配器模式
Facade Pattern 总管模式
Observer Pattern 观察者模式
Iterator Pattern 遍历模式
Lazy Initialization Pattern 懒加载模式
Proxy Pattern 代理模式
Builder Pattern 构建模式

英文文档下载:Github下载

评:这些模式是前端的,其实JS作为一种FP语言,主要强项是实现GOF的行为类型模式,如果为了模式而模式,就得实现一些其非强项的模式,比如结构类模式,比如其模块模式有时和工厂模式看上去差不多。代理模式等结构类模式基本都是在JQuery中实现,这时JQuery代码起到类似Java中的类的概念,而JS相当类的函数概念。

js。。。哎,如果我想实现对象成员的私有,竟然要用闭包去实现!类似这样的麻烦还有不少,还总有人说js很优雅,难道这么折腾一下,比直接来个private关键字更优雅??。。。我觉得,之所以js这么流行,是因为我们在浏览器端脚本方面没有别的选择。。。。
难道这是因为js是fp语言的缘故?我也不清楚,大家来讨论下。。。。

2012-12-03 15:11 "@lostalien"的内容
如果我想实现对象成员的私有,竟然要用闭包去实现 ...

JS等FP语言有一个假设前提,无态,不变性。如果想在对象中搞私有变量,一般理解为有态。

这如同数学定理,在一个假设前提下,FP确实很优雅,细节处理好,因为行为常表现在细节。无为是道,有为是术。呵呵。

简洁、术业有专攻是语言的一个趋势吧:为什么C++ 并没有"王者归来"?

2012-12-03 17:05 "@banq"的内容
JS等FP语言有一个假设前提,无态,不变性。如果想在对象中搞私有变量,一般理解为有态。 ...

难怪呢。。。看来思维一时半会儿还是很难转变过来