虽然 JavaScript 是一门完全面向对象的语言,但在很长一段时间内,JavaScript 在人们的印象中只是用来验证表单,或者完成一些简单动画特效的脚本语言。在 JavaScript 语言中运用设计模式难免显得小题大做。但是目前 JavaScript 已成为最流行的语言之一,在许多大型 Web 项目中,JavaScript 代码的数量已经非常多了。我们绝对有必要把一些优秀的设计模式借鉴到 JavaScript 这门语言中。许多优秀的 JavaScript 开源框架也运用了不少设计模式。
JavaScript 设计模式的社区目前还几乎是一片荒漠。网络上有一些讨论 JavaScript 设计模式的资料和文章,但是这些资料和文章都存在两个问题:
1、第一个问题是习惯把静态类型语言(比如 Java)的设计模式照搬到 JavaScript 中,比如有人为了模拟 JavaScript 版本的工厂方法(Factory Method)模式,而生硬地把创建对象的步骤延迟到子类中。实际上,在 Java 等静态类型语言中,让子类来 "决定" 创建何种对象的原因是为了让程序迎合依赖倒置原则(DIP)。在这些语言中创建对象时,先解开对象类型直接的耦合关系非常重要,这样才有机会在将来让对象表现出多态性。
2、而在 JavaScript 这种类型模糊的语言中,对象多态性是天生的,一个变量即可以指向一个类,又可以随时指向另外一个类。JavaScript 不存在类型耦合的问题,自然也没有必要刻意去把对象 "延迟" 到子类创建,也就是说,JavaScript 实际上是不需要工厂方法模式的。模式的存在首先是能为我们解决什么问题,这种牵强模拟只会让人觉得设计模式既难懂又没什么用处。
探讨JavaScript作为一门面向对象的语言,在大型Web项目中的设计模式应用。分析JavaScript与静态类型语言在设计模式上的区别,如工厂方法模式,并提出JavaScript设计模式社区的发展方向。
1172

被折叠的 条评论
为什么被折叠?



