跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
JavaScript设计原则
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== SOLID原则 == SOLID是面向对象编程中的五个基本原则,适用于JavaScript(尤其是使用类和对象时)。 === 单一职责原则(SRP) === 一个类或函数应该只有一个职责。例如: <syntaxhighlight lang="javascript"> // 违反SRP的示例 class User { constructor(name, email) { this.name = name; this.email = email; } saveToDatabase() { // 保存用户到数据库 } sendEmail() { // 发送邮件 } } // 遵循SRP的改进 class User { constructor(name, email) { this.name = name; this.email = email; } } class UserRepository { saveToDatabase(user) { // 保存用户到数据库 } } class EmailService { sendEmail(user) { // 发送邮件 } } </syntaxhighlight> === 开闭原则(OCP) === 软件实体应对扩展开放,对修改关闭。例如: <syntaxhighlight lang="javascript"> // 违反OCP的示例 class Logger { log(message, type) { if (type === 'console') { console.log(message); } else if (type === 'file') { // 写入文件 } } } // 遵循OCP的改进 class Logger { log(message) { throw new Error('Method not implemented'); } } class ConsoleLogger extends Logger { log(message) { console.log(message); } } class FileLogger extends Logger { log(message) { // 写入文件 } } </syntaxhighlight> === 里氏替换原则(LSP) === 子类应该能够替换父类而不影响程序行为。例如: <syntaxhighlight lang="javascript"> class Bird { fly() { return "I can fly"; } } class Penguin extends Bird { fly() { throw new Error("Penguins can't fly"); } } // 违反LSP,因为Penguin无法替换Bird </syntaxhighlight> === 接口隔离原则(ISP) === 客户端不应被迫依赖它们不使用的接口。例如: <syntaxhighlight lang="javascript"> // 违反ISP的示例 class Worker { work() {} eat() {} } // 遵循ISP的改进 class Workable { work() {} } class Eatable { eat() {} } </syntaxhighlight> === 依赖倒置原则(DIP) === 高层模块不应依赖低层模块,两者都应依赖抽象。例如: <syntaxhighlight lang="javascript"> // 违反DIP的示例 class LightBulb { turnOn() {} } class Switch { constructor(bulb) { this.bulb = bulb; } operate() { this.bulb.turnOn(); } } // 遵循DIP的改进 class SwitchableDevice { turnOn() {} } class LightBulb extends SwitchableDevice { turnOn() {} } class Switch { constructor(device) { this.device = device; } operate() { this.device.turnOn(); } } </syntaxhighlight>
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)