GMTC北京站优惠购票最后一周!13个热点专题,50+大厂案例,这里一览 了解详情
写点什么

面向 JavaScript 的 SOLID 设计原则

  • 2014 年 1 月 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 年 1 月 24 日 08:245378
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

阿里巴巴DevOps文化浅谈

阿里云云效

阿里巴巴 阿里云 DevOps 云原生 研发

百度爱番番实时CDP建设实践

百度Geek说

后端

前端开发之js栈内存和堆内存的区别

@零度

JAVA开发 堆内存 栈内存

推荐学java——Spring与web项目

逆锋起笔

Spring web idea web web项目 idea spring

不断突破,稳中求进——我的移动端跨平台开发技术回顾与展望| 社区征文

No Silver Bullet

跨平台 移动端 新春征文 2月月更

java开发之Spring集成MyBatis知识分享

@零度

Java spring mybatis

分配任务的人才是团队的核心成员

panda

管理 限界上下文 任务分配

如何解决Python项目在VScode中跨文件夹导包问题

IT蜗壳-Tango

IT蜗壳教学 2月月更

探秘 k8e:极简 Kubernetes 发行版

张晓辉

Kubernetes 云原生

腾讯员工怒怼加班文化事件:大厂的内卷,小厂有什么资格?

菜根老谭

面试突击20:进程和线程有什么区别?

王磊

设备接入服务,看完这篇给你整的明明白白

华为云开发者联盟

物联网 IoT 华为云 设备接入服务 设备

Java 字符串常见的操作

编程江湖

【高并发】一文解密诡异并发问题的第一个幕后黑手——可见性问题

冰河

Java 并发编程 多线程 异步编程 精通高并发系列

百度APP视频播放中的解码优化

百度Geek说

百度 性能优化 视频

Java11特性-效能翻倍的HttpClient

蜜糖的代码注释

Java 后端技术 2月月更

【架构实战营】模块七:命题作业

wgl

「架构实战营」

如何让代码代码管理变的更安全更高效 | 云效开发篇

阿里云云效

阿里云 DevOps 云原生 代码管理 Codeup

React Fragment介绍与使用

编程江湖

React

预约小程序开发笔记一:背景与技术方案的选型

CC同学

永中软件加入龙蜥社区,共建开源新生态

OpenAnolis小助手

Linux 开源 永中

在阿里,我们如何管理代码分支?

阿里云云效

阿里云 DevOps 云原生 研发 分支管理

Ceph核心概念解读

总想做点什么

分布式存储 Ceph 云存储 云计算,

从原理到操作,让你在 APISIX 中代理 Dubbo 服务更便捷

Apache APISIX 中国社区

微服务网关

大数据开发之运维面试题汇总分享

@零度

面试题 大数据运维

盘点冬奥会上的那些“黑科技”,你也可以掌握它!

博文视点Broadview

Kubernetes HPA 基于 Prometheus 自定义指标的可控弹性伸缩

张晓辉

Kubernetes 弹性 HPA

7

Geek_59dec2

Go 学习路线(2022)

AlwaysBeta

Go golang Go 语言

鸿蒙轻内核源码分析:文件系统LittleFS

华为云开发者联盟

鸿蒙 文件系统 Flash LittleFS LiteOS-M内核

“1天一朵云”,这是如何做到的?

华为云开发者联盟

数字化转型 软件架构 华为云 华为云Stack 全栈云平台

2022 阿里云飞天技术峰会 - InfoQ 特别报道直播间

2022 阿里云飞天技术峰会 - InfoQ 特别报道直播间

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