时隔16年Jeff Barr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

面向 JavaScript 的 SOLID 设计原则

  • 2014-01-24
  • 本文字数:849 字

    阅读完需:约 3 分钟

Derick Bailey 是一位专注于 JavaScript 的作者和开发者,他最近在 CodeMash 上发表的演讲中指出:很多开发者都使用过面向对象语言,也有很多开发者使用过JavaScript,但很少有人把面向对象原则和JavaScript 放在一起使用过。在面向对象编程中,我们会把这些基础和原则看做工作的根基,但是从基于类的静态语言转向基于松散的类型而非类的语言时,往往发现同样的原则很难应用。

Derick 宣称,为帮助开发者编写良好且稳定的 JavaScript 代码,有很多很好的原则、实践和模式可供使用,一个例子就是 Robert C. Martin 于本世纪初总结出的 SOLID 原则

Derick 把 SOLID 原则描述为可以很好地配合的五个独立模式,他还使用代码示例依次介绍了所有这些模式,同时看了一些 JavaScript 特有的风格,这些风格使得在 JavaScript 中应用 SOLID 原则与在像 Java 和 C#这样的语言中应用有点不同。

Derick 对这五种原则的定义是:

  • 单一职责原则。当需要做出修改时,原因只能有一个。这有助于帮助开发者理解所构建事物的上下文和职责,并理解何时需要修改。
  • 开放-封闭原则。行为的改变应该可以在不改变现有代码的条件下进行,例如,使用扩展点和创建可以插入的代码。
  • 里氏替换原则。派生的对象或类型必需能够替换其基类。在 Derick 看来,这是开放 - 封闭原则的一个更为专注的版本。
  • 接口隔离原则。不应该强迫客户依赖没有使用的接口。有个问题是,JS 中没有显式的接口,不过我们有些方法绕过。
  • 依赖倒转原则。考虑两个概念,抽象(Abstraction)和所有权(Ownership)。前者指的是我们应该依赖抽象,而不是依赖具体实现;后者指的是低层实现应该依赖高层概念(译者注:关于 Ownership,Derick 在演讲中提到了“细节依赖策略,而策略不依赖细节”)。

在演讲最后,Derick 指出:如果系统中有规模庞大、整整一片的代码块,SOLID 可以帮你把它们拆成单个的部分。尽管不会降低复杂性,但是会帮你创建抽象,并将细节组织为我们可以理解的更大的概念。

译者注:演讲相关的 Slides 和 JavaScript 代码下载

查看英文原文: SOLID Design Principles for JavaScript

2014-01-24 08:246144
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 148.6 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

今天才晓得跟月薪5W的聊过后,才知道自己一直在打杂...

退休的汤姆

Java 面经 社招 Java工程师 秋招

他97年的,我既然卷不过他...

退休的汤姆

Java 外包 面经 Java工程师 秋招

秋招偷偷盘点一下各大互联网公司的实习薪资

退休的汤姆

面经 大厂面试 社招 Java工程师 秋招

Spring Security OAuth2客户端凭据授权

程序知音

Java 程序员 springboot 后端技术

Github 秋招爆火!这套面试笔记足够你拿下 90% 以上的 Java 面试!

退休的汤姆

Java、 面经 社招 Java工程师 秋招

秋招腾讯!配套初级程序员到Java高级架构师学习路线+配套学习资源

退休的汤姆

Java、 面经 社招 Java工程师 秋招

冲刺金九银十!GitHub中文社区秋招趋势最热的面试题被我整理好了

Java面试那些事儿

Java 编程 程序员 架构 面试

RabbitMQ面试29连问,看完还过不了面试,我给你一Jio

小柴说Java

Java 编程 程序员 架构 面试

我凭借这份pdf成功拿到了蚂蚁,京东,小米,腾讯等大厂的offer

小柴说Java

Java 编程 程序员 架构 面试

程序员面试太卷?我选择背这份阿里最新Java面试八股文(详解版)

小柴说Java

Java 编程 程序员 架构 面试

仿淘宝大流量高并发电商领域核心项目已上线(完整流程+白皮书)

小柴说Java

Java 编程 程序员 架构 面试

双非本科参加了数场面试,并从美团三面中总结出Java面试真题手册

Java面试那些事儿

Java 编程 程序员 架构 面试

教你从创建数据表到实现最基础增删改查的实现全过程,小白也能轻松学会【带附件】

CRMEB

你必须知道的Java泛型

自然

Java core 8月月更

连续仨月霸占牛客榜首!京东T8呕心巨作:700页JVM虚拟机实战手册

小柴说Java

Java 编程 程序员 架构 面试

用户权限-Linux系统基本权限

Albert Edison

Linux centos 运维 用户权限 8月月更

外包干了四年,感觉人生就这样了..

退休的汤姆

Java 面经 社招 Java工程师 秋招

什么是架构思维?

涛哥 数字产品和业务架构

企业架构

惊爆GitHub!腾讯T14级SQL首席专家开源分布式数据库架构实践手册

小柴说Java

Java 编程 程序员 架构 面试

了解布隆过滤器

自然

Java core 8月月更

无意中发现阿里巴巴Java开发手册「2022最新黄山版」竟然发布了

Java面试那些事儿

Java 编程 程序员 架构 面试

秋招!2022备战金九银十Java面试八股文合集 高薪的敲门砖

退休的汤姆

Java、 面经 社招 Java工程师 秋招

计算机网络(五、运输层)

计算机网络 8月月更

计算机网络(六、应用层)

计算机网络 8月月更

架构师知识的可迁移性:目标,元素,连接

田晓亮

架构

校招失败,在小公司熬了 2 年后我终于进了阿里,竭尽全力(Java 岗)

退休的汤姆

面经 社招 面试技巧 Java工程师 秋招

秋招最牛的Java面试八股文合集,让我见识到了基础的天花板

退休的汤姆

Java、 面经 社招 Java工程师 秋招

袭卷面试大厂!秋招最全Java面试八股文,堪称大厂offer收割机!

退休的汤姆

Java、 面经 社招 Java工程师 秋招

从 Kubernetes 事件中提取价值

玄月九

Kubernetes k8s Event 价值 事件

基于小程序的小区物业管理平台开发笔记

CC同学

面向JavaScript的SOLID设计原则_JavaScript_Jan Stenberg_InfoQ精选文章