对 JavaScript 设计模式的误解 ★

探讨JavaScript作为一门面向对象的语言,在大型Web项目中的设计模式应用。分析JavaScript与静态类型语言在设计模式上的区别,如工厂方法模式,并提出JavaScript设计模式社区的发展方向。

虽然 JavaScript 是一门完全面向对象的语言,但在很长一段时间内,JavaScript 在人们的印象中只是用来验证表单,或者完成一些简单动画特效的脚本语言。在 JavaScript 语言中运用设计模式难免显得小题大做。但是目前 JavaScript 已成为最流行的语言之一,在许多大型 Web 项目中,JavaScript 代码的数量已经非常多了。我们绝对有必要把一些优秀的设计模式借鉴到 JavaScript 这门语言中。许多优秀的 JavaScript 开源框架也运用了不少设计模式。

JavaScript 设计模式的社区目前还几乎是一片荒漠。网络上有一些讨论 JavaScript 设计模式的资料和文章,但是这些资料和文章都存在两个问题:

1、第一个问题是习惯把静态类型语言(比如 Java)的设计模式照搬到 JavaScript 中,比如有人为了模拟 JavaScript 版本的工厂方法(Factory Method)模式,而生硬地把创建对象的步骤延迟到子类中。实际上,在 Java 等静态类型语言中,让子类来 "决定" 创建何种对象的原因是为了让程序迎合依赖倒置原则(DIP)。在这些语言中创建对象时,先解开对象类型直接的耦合关系非常重要,这样才有机会在将来让对象表现出多态性。

2、而在 JavaScript 这种类型模糊的语言中,对象多态性是天生的,一个变量即可以指向一个类,又可以随时指向另外一个类。JavaScript 不存在类型耦合的问题,自然也没有必要刻意去把对象 "延迟" 到子类创建,也就是说,JavaScript 实际上是不需要工厂方法模式的。模式的存在首先是能为我们解决什么问题,这种牵强模拟只会让人觉得设计模式既难懂又没什么用处。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值